English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# включает структуру DateTime для обработки дат и времени.
Чтобы использовать дату и время в C#, создайте объект структуры DateTime с помощью ключевого слова new. Ниже создается объект DateTime с Значением по умолчанию.
DateTime dt = new DateTime(); // присваивается значение по умолчанию 01/01/0001 00:00:00
Значение по умолчанию и минимальное значение объекта DateTime составляет 01 января 0001 года 00:00:00 (полночь). Максимальное значение может быть 31 декабря 9999 года в 23:59:59
Используйте различные конструкторы структуры DateTime для присвоения начального значения объекту DateTime.
// присваивается значение по умолчанию 01/01/0001 00:00:00 DateTime dt1 = new DateTime(); // присваивается год, месяц, день DateTime dt2 = new DateTime(2015, 12, 31); // присваивается год, месяц, день, час, минута, секунды DateTime dt3 = new DateTime(2015, 12, 31, 5, 10, 20); // присваивается год, месяц, день, час, минута, секунды, UTC часовой пояс DateTime dt4 = new DateTime(2015, 12, 31, 5, 10, 20, DateTimeKind.Utc);
В предыдущем примере мы указали год, месяц и день в конструкторе. Год может быть от 0001 до 9999, месяц от 1 до 12, день от 1 до 31. Установка любого другого значения за пределами этого диапазона приведет к возникновению исключения в режиме выполнения.
DateTime dt = new DateTime(2015, 12, 32); // вызывается исключение: день выходит за пределы диапазона
Используйте различные конструкторы DateTime для установки даты, времени, часового пояса, календаря и региональных параметров.
Тайки представляют собой дату и время, выраженные в количестве 100 наносекундных интервалов с 00:00:00.000 1 января по григорианскому календарю. Ниже с помощью числового значения инициализируется объект DateTime.
DateTime dt = new DateTime(636370000000000000); DateTime.MinValue.Ticks; // Минимальное значение ticks DateTime.MaxValue.Ticks; // Максимальное значение ticks
Структура DateTime включает статические поля, свойства и методы. Ниже приведён пример важных статических полей и свойств.
DateTime currentDateTime = DateTime.Now; // Возвращает текущую дату и время DateTime todaysDate = DateTime.Today; // Возвращает сегодняшнюю дату DateTime currentDateTimeUTC = DateTime.UtcNow; // Возвращает текущую дату и время в UTC DateTime maxDateTimeValue = DateTime.MaxValue; // Возвращает максимальное значение DateTime DateTime minDateTimeValue = DateTime.MinValue; // Возвращает минимальное значение DateTime
TimeSpan — это структура, которая используется для представления времени в единицах времени (дни, часы, минуты, секунды и миллисекунды).
DateTime dt = new DateTime(2015, 12, 31); TimeSpan ts = new TimeSpan(25, 20, 55); DateTime newDate = dt.Add(ts); Console.WriteLine(newDate); // 1/1/2016 1:20:55 AM
Разность между двумя датами даёт TimeSpan.
DateTime dt1 = new DateTime(2015, 12, 31); DateTime dt2 = new DateTime(2016, 2, 2); TimeSpan result = dt2.Subtract(dt1); // 33.00:00:00
Структура DateTime перегружена операторами +, -, ==!, >, <, <=, >=, что упрощает сложение, вычитание и сравнение дат. Это делает обработку дат очень удобной.
DateTime dt1 = new DateTime(2015, 12, 20); DateTime dt2 = new DateTime(2016, 12, 31, 5, 10, 20); TimeSpan time = new TimeSpan(10, 5, 25, 50); Console.WriteLine(dt2 + time); // 1/10/2017 утро 10:36:10 Console.WriteLine(dt2 - dt1); //377.05:10:20 Console.WriteLine(dt1 == dt2); //False Console.WriteLine(dt1 != dt2); //True Console.WriteLine(dt1 > dt2); //False Console.WriteLine(dt1 < dt2); //True Console.WriteLine(dt1 >= dt2); //False Console.WriteLine(dt1 <= dt2); //True
Структура DateTime содержит следующие методы для преобразования даты и времени в строку.
Метод | Описание |
---|---|
ToString | Преобразовать значение DateTime в строку с указанным форматом в текущей области. |
ToShortDateString | Преобразовать значение DateTime в строку короткой даты в текущей области (модель M/d/yyyy). |
ToShortTimeString | Преобразовать значение DateTime в строку короткого времени в текущей области (модель h: mm: ss). |
ToLongDateString | Преобразовать значение DateTime в строку долгой даты в текущей области (модель dddd, MMMM d, yyyy). |
ToLongTimeString | Преобразовать значение DateTime в строку долгого времени в текущей области (модель h:mm:ss tt). |
Ниже приведен пример того, как преобразовать DateTime в строку различного формата.
var dt = DateTime.Now; Console.WriteLine("Текущая строка даты и времени: " + dt.ToString("d")); Console.WriteLine("Формат MM/dd/yyyy: " + dt.ToString("MM/dd/yyyy")) Console.WriteLine("Формат dddd, dd MMMM yyyy: " + dt.ToString("dddd, dd MMMM yyyy")); Console.WriteLine("Формат MM/dd/yyyy h:mm tt: " + dt.ToString("MM/dd/yyyy h:mm tt")); Console.WriteLine("Формат MMMM dd: " + dt.ToString("MMMM dd")); Console.WriteLine("Формат HH:mm:ss: " + dt.ToString("HH:mm:ss")); Console.WriteLine("Формат hh:mm tt: " + dt.ToString("hh:mm tt")); Console.WriteLine("Короткая строка даты: " + dt.ToShortDateString()); Console.WriteLine("Длинная строка даты: " + dt.ToLongDateString()); Console.WriteLine("Короткая строка времени: " + dt.ToShortTimeString()); Console.WriteLine("Длинная строка времени: " + dt.ToLongTimeString());
Методы Parse (), ParseExact (), TryParse () и TryParseExact () могут использоваться для преобразования действительных строк даты и времени в объект DateTime.
Если указанная строка не является действительным представлением даты и времени, методы Parse () и ParseExact () выбросят исключение. Поэтому рекомендуется использовать методы TryParse () или TryParseExact (), так как если строка недействительна, они вернут false.
var str = "5/12/2020"; DateTime dt; var isValidDate = DateTime.TryParse(str, out dt); if(isValidDate) Console.WriteLine(dt); else Console.WriteLine($"{str} is not a valid date string");