Дата и время
Дата и время
Дата и время
Дата и время
Строки
Строки
Строки
Строки
Строки
Структуры
Структуры
Структуры
Структуры
248.00K
Category: programmingprogramming

Дата и время в языке C#. Лекция 47-49

1. Дата и время

В языке C# отсутствует тип, переменные которого хранят дату и
время. Однако для работы с датами и временем имеются
специальные классы DateTime и TimeSpan.
Объект класса DateTime может хранить только одну дату. При этом
у
класса
существует
12
перегруженных
конструкторов,
позволяющие использовать различные наборы составляющих даты
(например, только составляющие даты или только составляющие
времени).
В следующем примере дата задается по шести составляющим:
int year = 2012; // Определяем год
int month = 12; // Определяем месяц
int day = 21; // Определяем день
int hour = 13; // Определяем час
int minute = 31; // Определяем минуту
DateTime dt = new DateTime(year, month, day, hour, minute, 0);
// Создаем переменную, хранящую дату: 21.12.2012 13:31:00

2. Дата и время

Класс DateTime предоставляет большое количество методов для
получения информации из объектов, представляющих данный
класс. Примеры работы методов:
dt.DayOfWeek.ToString(); // Название дня недели из даты
((int) dt.DayOfWeek).ToString(); // Номер дня недели из даты
dt.TimeOfDay.ToString(); // Время из даты
dt.DayOfYear.ToString(); // День года из даты
Дни недели нумеруются с 0 до 6 (0 – воскресенье, 1 – понедельник
и т.д.).
Чтобы получить информацию о текущих дате и времени, следует
обратиться к статическому свойству Now класса DateTime:
DateTime dt = DateTime.Now;
Поскольку Now является свойством, при получении информации о
текущих дате и времени никакие конструкторы не вызываются.

3. Дата и время








Класс DateTime обладает методами, позволяющими изменять
значения составляющих даты:
AddYears(int N) – метод добавляет к дате N лет;
AddMonths(int N) – метод добавляет к дате N месяцев;
AddDays(int N) – метод добавляет к дате N дней;
AddHours(int N) – метод добавляет к дате N часов;
AddMinutes(int N) – метод добавляет к дате N минут;
AddSeconds(int N) – метод добавляет к дате N секунд;
AddMilliseconds(int N) – метод добавляет к дате N миллисекунд.
Примечание. Указанные методы не изменяют содержимое объекта
класса DateTime, а возвращают ссылку на новый объект, содержащий
изменённую дату. Если требуется изменить при помощи данных
методов указанный объект, можно использовать конструкцию типа:
dt = dt.AddDays(-60); // Уменьшаем дату на 60 дней и изменяем объект

4. Дата и время

Класс DateTime также обладает методом Add(TimeSpan ts), который в
качестве параметра принимает переменную класса TimeSpan,
описывающего
интервал
времени.
Временные
интервалы
предназначены для облегчения вычислений при работе с датами.
Чтобы увеличить при помощи переменной класса TimeSpan значение
даты на 15 минут, можно использовать код:
TimeSpan ts = new TimeSpan(0, 15, 0); // Создаём интервал
dt = dt.Add(ts); // Увеличиваем дату на описанный интервал
В данном примере используется конструктор класса TimeSpan, в
который в качестве параметров передаются количество часов, минут и
секунд. У класса TimeSpan существуют также дополнительные
конструкторы с другим набором параметров (например, использующие
при создании интервала составляющие от количества дней до
количества секунд).
Максимальная составляющая интервала – дни. При этом любая
составляющая создаваемого интервала может иметь отрицательное
значение. В следующем примере создается интервал, равный -1 часу и
+10 минутам:
TimeSpan ts = new TimeSpan(-1, 10, 0);

5. Строки


Класс String описывает строки (массивы символов) и позволяет
осуществлять эффективную работу с ними. Методы класса:
Contains(String s) – метод позволяет проверить, содержит ли текущая
строка подстроку s (возвращаемое значение – true или false):
String str = "Hello world!";
str.Contains("world"); // true

Format(String
s, params Object[ ] o) – метод позволяет
форматировать строку с указанием мест, куда в строку будут
вставлены значения переданных в метод параметров. Метод является
статичным и вызывается не через объект, а через класс:
String.Format("Мое приветствие: ' {0} ' " , "Hello world!");
// Мое приветствие: ' Hello world! '

IndexOf(String s) – метод возвращает индекс символа, начиная с
которого в текущей строке найдена подстрока s (если подстрока не
была найдена, то метод возвращает -1 в качестве результата):
String str = "Hello world!";
int index = str.IndexOf("world"); // 6

6. Строки


Insert(int p, String s) – метод возвращает строку, являющуюся
результатом вставки в строку подстроки s, начиная с позиции p
(исходная строка при этом не меняется):
String str = "Новый";
String newstr = str.Insert(4, " мир"); // Новый мир

PadLeft(int N) – метод вписывает текущую строку в новую строку
длиной N с выравниванием по правому краю (пространство слева
заполняется пробелами).
String str = "мир";
String newstr = "|" + str.PadLeft(10) + "|"; // |

мир|
PadLeft(int N) – метод вписывает текущую строку в новую строку
длиной N с выравниванием по правому краю (пространство слева
заполняется пробелами).
String str = "мир";
String newstr = "|" + str.PadLeft(10) + "|"; // |мир
|

7. Строки


Remove(int p, int N) – метод возвращает строку, полученную из
исходной строки путем удаления N символов, начиная с позиции с
индексом p (если N не указано, то удаление осуществляется до конца
строки):
String str = "Новый мир";
String newstr = str.Remove(1, 5); // мир

Substring(int p, int N) – метод возвращает подстроку, полученную из
исходной строки выделением N символов, начиная с позиции с
индексом p:
String str = "Новый мир";
String newstr = str.Substring(1, 5); // Новый

Replace(String s1, String s2) – метод возвращает строку, полученную
из исходной строки путем замены всех подстрок s1 на строку s2:
String str = "Старый-старый мир";
String newstr = str.Replace("старый", "новый"); // Старый-новый мир

8. Строки


ToUpper() – метод возвращает новую строку, полученную путем
перевода всех символов исходной строки в верхний регистр:
String str = "Новый мир";
String newstr = str.ToUpper(); // НОВЫЙ МИР

ToLower() – метод возвращает новую строку, полученную путем
перевода всех символов исходной строки в нижний регистр:
String str = "Новый МИР";
String newstr = str.ToLower(); // новый мир

ToCharArray() – метод создает на основе исходной строки массив её
символов:
String str = "Новый мир";
char[ ] arr = str.ToCharArray();
foreach (char c in arr) Console.WriteLine(c + " "); // Н о в ы й м и р

9. Строки


В строках допускается использование управляющих кодов:
\' – вставка одинарной кавычки в строку;
\" – вставка двойной кавычки в строку;
\a – вызов системного сигнала;
\n – переход на новую строку (в ту же позицию);
\r – возврат каретки (в начало текущей строки);
\t – символ табуляции;
\\ – символ слэша.
Пример использования кода слэша при записи адреса файла в строку:






String s = "c:\\windows\\system32\\filename.txt";
Примечание. Работу управляющих кодов можно отключить, поставив
перед строкой символ @:
String s = @"c:\windows\system32\filename.txt";

10. Структуры

Структура – это набор типов данных, имеющий собственное имя.
Примером структуры может служить набор данных Person,
включающий в себя имя, фамилию и возраст персоны. Структура,
как и класс, может выступать в качестве типа элементов массива (в
рамках приведённого примера может быть создан массив персон).
При этом структура использована как простой тип данных (без
инициализации объекта через оператор new), так и как ссылочный
тип (с созданием объекта).
Описание структуры схоже с описанием класса – используются
модификаторы доступа и конструкторы. При этом для указания на
то, что описывается структура требуется использовать ключевое
слово struct.

11. Структуры

Пример описания структуры:
struct Person
{
public string FirstName; // Имя персоны
public string SecondName; // Фамилия персоны
public int age; // Возраст персоны
// Конструктор
public Person(string firstName, string secondName)
{
FirstName = firstName;
SecondName = secondName;
age = 18;
}
}

12. Структуры

Попробуем объявить переменную структуры и использовать ее без
инициализации:
Person p;
p.FirstName = "Иван";
Console.WriteLine(p.FirstName); // Иван
Данная программа будет работать без ошибок, поскольку в
последней строке мы обратились к полю, которому ранее было
присвоено конкретное значение.
Однако для следующего кода компилятор выдаст ошибку:
Console.WriteLine(p.LastName); // Ошибка
Это связано с тем, что при объявлении структуры как простой
переменной (без ключевого слова new), любое из её полей может
быть использовано только после присвоения ему конкретного
значения. При этом память выделяется только под значение
данного поля, а не под всю структуру.

13. Структуры

Инициализация структуры через оператор new приведёт к
инициализации всех её полей значениями по умолчанию (под
каждое из них будет выделена память). Таким образом, следующий
код не приведёт к ошибке:
Person p = new Person();
p.FirstName = "Иван";
Console.WriteLine(p.FirstName); // Иван
Console.WriteLine(p.LastName); //
Как и экземпляр класса, структура может быть инициализирована
посредством вызова дополнительного конструктора:
Person p = new Person("Иван", "Иванов");
Console.WriteLine(p.FirstName); // Иван
Console.WriteLine(p.LastName); // Иванов
English     Русский Rules