Урок 24. Получение информации DateTime C#


На этом уроке из руководства по основам C# мы продолжим изучение типа данных DateTime, предоставляемого C# и .NET Framework. Сейчас мы рассмотрим, как можно сравнить и извлечь информацию из значений этого типа.

Сравнение даты и времени. Операторы равенства и неравенства

На всем протяжении нашего учебника операторы равенство ( = = ) и неравенство (!= ) используются для сравнения значений. Эти операторы можно использовать с типом данных DateTime так же, как и для любого другого типа значений.

DateTime startDate = DateTime.Parse("30 Dec 2019");
DateTime endDate = DateTime.Parse("1 Jan 2020");
DateTime targetDate = DateTime.Parse("1 Jan 2020");
bool result;
result = startDate == endDate;      // result = false
result = targetDate == endDate;     // result = true
result = startDate != endDate;      // result = true
result = targetDate != endDate;     // result = false
Операторы сравнения

Тип данных DateTime содержит информацию, поддерживающую концепцию упорядочения. Это означает, что, как и в случае с числовыми типами данных, можно использовать операторы сравнения, чтобы определить, какой из двух операндов больше (или в случае информации о дате и времени позже). Как и в случае с числовыми данными, доступные операторы больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=).

DateTime startDate = DateTime.Parse("30 Dec 2019");
DateTime endDate = DateTime.Parse("1 Jan 2020");
DateTime targetDate = DateTime.Parse("1 Jan 2020");
bool result;
result = startDate > endDate;        // result = false
result = startDate < endDate;        // result = true
result = startDate >= endDate;       // result = false
result = startDate <= endDate;       // result = true
result = targetDate > endDate;       // result = false
result = targetDate < endDate;       // result = false
result = targetDate >= endDate;      // result = true
result = targetDate <= endDate;      // result = true
Кроме того, структура DateTime включает методы сравнения, Equals, Compare и CompareTo. Они работают примерно так же, как и для класса String, и были описаны на соответствующем уроке.

Структура DateTime

Тип данных DateTime предоставляет собой сложную структуру чисел, содержащую дату и время, включая год, месяц, день, час и т.д. Структура включает в себя все правила стандартной информации о дате и времени, автоматически решает такие проблемы, как определение количества дней в каждом месяце и работа с високосными годами. Эту информацию можно легко получить, используя различные доступные свойства и методы.

Извлечение определенных компонентов DateTime

Структура DateTime содержит числовые значения для года, месяца, дня, часа, минуты секунды и миллисекунды времени. Каждый из них может быть извлечен независимо как целое число, используя свойства структуры. Следующий пример определяет дату и время с точностью в миллисекундах и демонстрирует, как доступны различные значения.

DateTime theDate = DateTime.Parse("25 Dec 2019 01:02:03.433 PM");
int year = theDate.Year;                // year = 2006
int month = theDate.Month;              // month = 12
int day = theDate.Day;                  // day = 25
int hour = theDate.Hour;                // hour = 13
int minute = theDate.Minute;            // minute = 2
int second = theDate.Second;            // second = 3
int millisecond = theDate.Millisecond;  // millisecond = 433
Обратите внимание, что свойства доступны только для чтения, что позволяет извлекать значения, но не изменять их. Однако с помощью извлеченных значений можно создать новый объект DateTime. Это делается с помощью конструктора, как описано в предыдущей статье.

Извлечение даты или времени

Часто необходимо извлечь только часть даты или времени из значения DateTime. Дата может быть получена из свойства Date, которое возвращает значение DateTime со значением Time part, равным midnight.

DateTime theDate = DateTime.Parse("30 Dec 2019 13:11:15");
DateTime dateOnly = theDate.Date;       // dateOnly = 30 Dec 2019 00:00:00
Свойство TimeOfDay возвращает значение TimeSpan. Структура TimeSpan предназначена для хранения периода времени, а не мгновенного времени, обозначенного DateTime. Он имеет свойства, аналогичные структуре DateTime, но содержит только дни, часы, минуты, секунды и миллисекунды. Пример значения TimeSpan-1.12:05: 01, указывающий продолжительность одного дня, двенадцать часов, пять минут и одна секунда. При использовании свойства TimeOfDay типа DateTime возвращаемый объект TimeSpan заполняется только элементом time. Свойство Days имеет значение 0.

DateTime theDate = DateTime.Parse("31 Dec 2019 13:14:15");
TimeSpan timeOnly = theDate.TimeOfDay;  // timeOnly = 0.13:14:15
Свойство DayOfWeek

Свойство DayOfWeek позволяет определить день недели, на который приходится конкретная дата. Свойство возвращает значение перечисленного типа. Перечисленный тип предоставляет список именованных номеров, в этом случае числа от нуля до шести представляют имена дней с воскресенья по субботу. Значение DayOfWeek может быть преобразовано в число или строку в зависимости от желаемого использования.

DateTime theDate = DateTime.Parse("25 Dec 2019");
DayOfWeek day = theDate.DayOfWeek;      // Среда
int dayNumber = (int)day;               // dayNumber = 3
string dayString = day.ToString();      // dayString = " Wednesday"
Свойство Dayofyear

Иногда дата должна быть выражена как простое целое число, т. е. число дней, прошедших с начала текущего года. Datetime структура позволяет это через Dayofyear свойство. Это свойство возвращает номер дня в течение текущего года. Для 1 января возвращаемое значение равно одному. Для 31 декабря возвращаемое значение равно 365 или 366 для високосных лет.

DateTime standard = DateTime.Parse("5 March 2019");
DateTime leapyear = DateTime.Parse("5 March 2003");
int day;
day = standard.DayOfYear;               // day = 64
day = leapyear.DayOfYear;               // day = 64
Получение информации календаря

Наконец, можно использовать класс DateTime для получения информации о конкретном месяце или году, которая полезна при отображении или обработке информации календаря. Первый метод - DaysInMonth. Он принимает номера года и месяца в качестве параметров и возвращает количество дней в этом месяце. Второй , IsLeapYear, возвращает логическое значение, указывающее, является ли данный год високосным. Оба метода являются статическими.

int days = DateTime.DaysInMonth(2020, 2);   // days = 29
bool leap = DateTime.IsLeapYear(2009);      // leap = False
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, DateTime, Уроки по си шарп, си шарп, работа с датой




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Задача по кредиту
Урок 9. Перегрузка True и False в C#
Об авторе блога читающего программиста