На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Урок 23. Тип данных DateTime C#


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

Тип данных DateTime

До сих пор в нашем учебнике по C# мы рассматривали хранение и манипулирование числовыми и текстовыми данными. Если вы хотите обрабатывать информацию, содержащую дату и время, то использовать их (числа или текст) – не самое оптимальное решение. Гораздо лучшим вариантом является структура DateTime.

Структура DateTime описывает момент времени, содержит как дату, так и время. Часть date содержит дату, месяц и год, которые могут представлять даты между 1 января 0001 и 31 декабря 9999, период почти десять тысяч лет. Часть time хранит время с точностью миллисекунды.

Поскольку тип данных DateTime является структурой, а не объектом, переменные этого типа не могут содержать значения null. Однако при наличии такого широкого диапазона значений для указания неопределенной даты обычно используется такая конкретная дата, как 1/1/1 или 31/12/9999.

Всемирное координированное время

Всемирное координированное время (UTC) является всемирным стандартом для определения времени. В отличие от местного времени, которое варьируется между часовыми поясами и с переходом на летнее время, UTC время одинаково везде на Земле одновременно. Например, по местному времени это может быть 9: 00 утра в Великобритании и 10:00 утра во Франции. Выраженное в UTC - 9: 00 в обеих странах.

Время в формате UTC идеально подходит для хранения времени, в течение которого происходят события. Если используется местное время, то при изменении летнего времени можно ложно предположить, что события происходили в неправильном порядке. При использование UTC данная проблема исчезает. Это особенно заметно, когда программа пишется не для личного пользования, а (в том числе) и для людей, живущих в других странах.

Структура DateTime позволяет создавать значения даты и времени, используя местное время или UTC. Оно позволяет преобразование между 2 временами так, что информацию можно хранить точно и показывать, используя предпочтение юзера.

Ticks

Наименьший определяемый интервал времени - десять миллионных долей секунды, или сто наносекунд. Этот период времени известен как тик (Ticks). Тики обеспечивают точный метод описания времени в DateTime путем подсчета количества тиков с 1 января 0001.

Назначение DateTime

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

Конструкторы DateTime

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

DateTime newDate;
newDate = new DateTime(2019, 12, 20);           // 20 декабря 2019 (полночь)
newDate = new DateTime(2006, 13, 20);           // ошибка
Чтобы включить время в значение DateTime, можно использовать дополнительные параметры. Для представления часов, минут и секунд можно добавить три дополнительных целочисленных параметра. Для большей точности можно указать седьмой целочисленный параметр, представляющий число миллисекунд.

DateTime newDate;
newDate = new DateTime(2019, 1, 2, 3, 4, 5);    // 2 января 2019 03:04:05
newDate = new DateTime(2019, 1, 2, 3, 4, 5, 6); // 2 января 2019 03:04:05.0006
Наиболее точное значение DateTime использует количество тиков в 64-разрядном целочисленном (или длинном) параметре. Параметр определяет количество тиков с полуночи 1 января 0001. Количество тиков для существующей даты также может быть извлечено из DateTime путем чтения свойства Ticks.

DateTime newDate;
newDate = new DateTime(0);                      // 1 января 0001 (полночь)
newDate = new DateTime(630823790450000000);     // 2 января 2000 03:04:05
long numTicks = newDate.Ticks;                  // Result = 630823790450000000
Синтаксический анализ строк

Принимая дату, введенную пользователем, может быть трудно гарантировать, что используется правильный формат, особенно для международных приложений, где пользователи в разных странах имеют различные форматы даты. Метод Parse преобразует строки в значения DateTime, используя локальные форматы дат. Примечание: существуют различные перегруженные варианты метода разбора, которые дают более точный контроль над преобразованием строк. Существует также другой метод с именем ParseExact. Это выходит за рамки нашего учебника по основам C#.

Назначение текущей даты и времени

Структура DateTime предоставляет три статических свойства, возвращающих текущую дату или время. Свойство Now возвращает текущую локальную дату и время. Если вам нужна только дата, вы можете использовать свойство Today, которое по умолчанию время до полуночи. Наконец, при хранении времени с использованием скоординированного универсального времени свойство UtcNow предоставляет правильную дату и время в формате UTC.

DateTime newDate;
newDate = DateTime.Now;                         // текущее время
newDate = DateTime.Today;                       // текущая дата (полночь)
newDate = DateTime.UtcNow;                      // текущее UTC время
MinValue и MaxValue

Последний способ создания DateTime - использовать одно из двух предопределенных значений. Они извлекаются из статических свойств MinValue или MaxValue . Эти свойства возвращают минимальные или максимально возможные значения DateTime и обычно используются, чтобы указать, что дата не определена, если использование null не разрешено.

DateTime newDate;
newDate = DateTime.MinValue;                    // 01/01/0001 00:00:00
newDate = DateTime.MaxValue;                    // 31/12/9999 23:59:59
.NET 2.0 DateTime и null

Ранее в учебнике мы рассмотрели числовые типы данных nullable, которые были представлены как часть Framework 2.0. Тип данных DateTime имеет nullable эквивалент с подобной функциональностью.

DateTime? nullableDate;
nullableDate = DateTime.MinValue;          
nullableDate = null;                            // присваиваем  неопределенное значение




Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



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

Читайте также:




Кодирование и декодирование base64 на Java 8
Primary


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.