Шаг 289.
Язык программирования C#. Начала.
Немного о разном. Работа с датой и временем
На этом шаге мы перечислим основные свойства и методы структуры, предназначенной для работы с датой и временем.
Нередко приходится иметь дело с таким специфическим типом информации, как дата и время. Для работы с датой и временем в языке C# предназначена структура DateTime.
Экземпляры этой структуры позволяют представлять дату и время в диапазоне от 00:00:00 (ноль часов, ноль минут, ноль секунд) 1 января 1 года новой эры до 23:59:59 (без одной секунды полночь)
31 декабря 9999 года (даты здесь указаны по григорианскому календарю). Технически дата (и время) реализуется в виде целого числа, равного количеству тактов, которые прошли до данной даты,
начиная с полночи 1 января 1 года. Длительность одного такта равна 100 наносекундам (или 1 миллисекунда - это 10 000 тактов).
"Наибольшую" и "наименьшую" дату, которые можно реализовать с помощью экземпляра структуры, можно узнать с помощью статических полей MaxValue и MinValue соответственно.
Значением полей (доступных только для чтения) являются экземпляры структуры DateTime, соответствующие финальной и начальной датам, которые могут быть реализованы с помощью этой
структуры.
Если нас интересует только время (без даты), то в этом случае можно использовать экземпляр структуры TimeSpan.
Экземпляр структуры DateTime реализует определенную дату (и время). Существуют разные способы создать экземпляр структуры. Например, аргументами конструктору можно передать год,
месяц и день для даты, реализуемой экземпляром структуры. Можно дополнительно указать часы, минуты и секунды. Или даже миллисекунды. Предусмотрена возможность явно указывать календарь,
а также использовать мировое время (вместо местного, используемого по умолчанию). Можно определить дату и время, передав конструктору количество тактов.
Экземпляр структуры DateTime содержит информацию о годе, месяце, дне в месяце, часах, минутах, секундах и миллисекундах. Здесь и далее под датой мы будем подразумевать совокупность
всех перечисленных выше параметров.
В структуре DateTime есть много свойств и методов. Часто используется статическое свойство Now. Результатом оно возвращает экземпляр структуры, соответствующий текущей
дате и времени (определяется по текущему времени компьютера). Если нужно получить текущую дату и время по мировому времени (формат UTC), используют свойство UtcNow.
У структуры DateTime есть и другие полезные свойства:
- значением свойства Today является экземпляр структуры DateTime, реализующий текущую дату (имеется в виду только дата, без времени - время устанавливается нулевое);
- значением свойства Year является целое число, соответствующее году для данной даты;
- значением свойства Month является целое число, определяющее месяц для данной даты;
- значение свойства Day - это целое число, определяющее день в месяце для данной даты;
- значением свойства Hour является целое число, определяющее количество часов для данной даты;
- значением свойства Minute является целое число, определяющее количество минут для данной даты;
- значением свойства Second является целое число, определяющее количество секунд для данной даты;
- свойство Millisecond возвращает целочисленное значение, определяющее миллисекунды для даты;
- свойство Ticks возвращает целое число, равное количеству тактов в данной дате;
- значением свойства DayOfWeek является константа из одноименного перечисления DayOfWeek, определяющая день недели для даты;
- свойство DayOfYear возвращает результатом целое число, определяющее день в году для данной даты;
- значением свойства Kind является константа из перечисления DateTimeKind, определяющая характер времени (местное или мировое).
Кроме многочисленных свойств, у структуры DateTime имеется много методов, позволяющих выполнять различные операции с датой и временем. Есть группа методов, предназначенных для
добавления к дате, реализованной экземпляром структуры DateTime, определенного интервала времени (годы, дни, часы, секунды и так далее):
- Методу Add() аргументом передается экземпляр структуры TimeSpan (время в часах, минутах, секундах и миллисекундах). Результатом возвращается новый экземпляр структуры DateTime, который описывает результат добавления данного временного интервала к исходной дате.
- Метод AddDays() позволяет добавить к дате дни (double-аргумент метода). Результат - экземпляр структуры DateTime.
- Метод AddHours() используется для добавления к дате часов (double-аргумент метода), результатом возвращается экземпляр структуры DateTime.
- Метод AddMilliseconds() аргументом получает double-значение, определяющее количество миллисекунд, добавляемых к дате. Результатом возвращается экземпляр структуры DateTime, соответствующий новой дате.
- Метод AddMinutes() позволяет вычислить новую дату (экземпляр структуры DateTime), получающуюся прибавлением к исходной дате определенного количества минут (double-аргумент метода).
- Метод AddMonths() аргументом получает количество месяцев, прибавляемых к дате (целое число). Результатом является экземпляр структуры DateTime с новой датой.
- Методу AddSeconds() передается double-значение, определяющее количество добавляемых к дате секунд. Результатом возвращается экземпляр структуры DateTime с новой датой.
- Метод AddTicks() позволяет добавить к дате указанное количество тактов (целочисленный аргумент метода). Результатом возвращается экземпляр структуры DateTime с новой датой.
- Метод AddYears() позволяет добавить к дате определенное количество лет (целочисленный аргумент метода). Результатом является экземпляр структуры DateTime с новой датой.
- Метод DaysInMonth() аргументами получает два целочисленных значения (год и месяц в году), а результатом возвращает количество дней в месяце.
- Метод GetDateTimeFormats() может вызываться с разными аргументами (в том числе и без них), а результатом является текстовый массив с поддерживаемыми форматами для текстовых представлений даты.
- Метод IsDaylightSavingTime() позволяет проверить, попадает ли данная дата в диапазон летнего времени (для текущего часового пояса).
- Статический метод IsLeapYear() используется для проверки того, является ли год високосным. Год в виде целого числа передается аргументом методу.
- Аргументом методу Subtract() передается экземпляр структуры DateTime (дата) или TimeSpan (время). Из исходной даты вычитается дата/время, переданные аргументом методу Результатом возвращается экземпляр структуры TimeSpan и DateTime соответственно.
- Для перевода даты в местное время используют метод ToLocalTime().
- Для получения текстового представления даты используют метод ToString(). Метод может вызываться без аргументов (в том числе при автоматическом преобразовании типов) или с передачей аргументов, определяющих формат текстового представления.
- Для перевода даты в мировое время UTC используют метод ToUniversalTime().
- Для сравнения дат используют методы Compare(), CompareTo() и Equals().
К экземплярам структуры DateTime применяются операторы сравнения, а также сложение (к экземпляру структуры DateTime можно прибавлять экземпляр структуры TimeSpan) и вычитание (из экземпляра структуры
DateTime можно вычитать экземпляр структуры DateTime или TimeSpan).
На следующем шаге мы рассмотрим пример использования этой структуры.
Предыдущий шаг
Содержание
Следующий шаг