Си шарп функции времени

Работа с датами и временем

Для работы с датами и временем в .NET предназначена структура DateTime . Она представляет дату и время от 00:00:00 1 января 0001 года до 23:59:59 31 декабря 9999 года.

Для создания нового объекта DateTime также можно использовать конструктор. Пустой конструктор создает начальную дату:

DateTime dateTime = new DateTime(); Console.WriteLine(dateTime); // 01.01.0001 0:00:00

То есть мы получим минимально возможное значение, которое также можно получить следующим образом:

Console.WriteLine(DateTime.MinValue);

Чтобы задать конкретную дату, нужно использовать один из конструкторов, принимающих параметры:

DateTime date1 = new DateTime(2015, 7, 20); // год - месяц - день Console.WriteLine(date1); // 20.07.2015 0:00:00
DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // год - месяц - день - час - минута - секунда Console.WriteLine(date1); // 20.07.2015 18:30:25

Если необходимо получить текущую время и дату, то можно использовать ряд свойств DateTime:

Console.WriteLine(DateTime.Now); Console.WriteLine(DateTime.UtcNow); Console.WriteLine(DateTime.Today);
20.07.2015 11:43:33 20.07.2015 8:43:33 20.07.2015 0:00:00

Свойство DateTime.Now берет текущую дату и время компьютера, DateTime.UtcNow — дата и время относительно времени по Гринвичу (GMT) и DateTime.Today — только текущая дата.

При работе с датами надо учитывать, что по умолчанию для представления дат применяется григорианский календарь. Но что будет, если мы захотим получить день недели для 5 октября 1582 года:

DateTime someDate = new DateTime(1582, 10, 5); Console.WriteLine(someDate.DayOfWeek);

Консоль высветит значение Tuesday, то есть вторник. Однако, как может быть известно из истории, впервые переход с юлианского календаря на григорианский состоялся в октябре 1582 года. Тогда после даты 4 октября (четверг) (еще по юлианскому календарю) сразу перешли к 15 октября (пятница)(уже по григорианскому календарю). Таким образом, фактически выкинули 10 дней. То есть после 4 октября шло 15 октября.

Читайте также:  Vue.js Live Data Search with PHP & Mysql

В большинстве случаев данный факт вряд ли как-то повлияет на вычисления, однако при работе с очень давними датами данный аспект следует учитывать.

Операции с DateTime

Основные операции со структурой DateTime связаны со сложением или вычитанием дат. Например, надо к некоторой дате прибавить или, наоборот, отнять несколько дней.

Для добавления дат используется ряд методов:

  • Add(TimeSpan value) : добавляет к дате значение TimeSpan
  • AddDays(double value) : добавляет к текущей дате несколько дней
  • AddHours(double value) : добавляет к текущей дате несколько часов
  • AddMinutes(double value) : добавляет к текущей дате несколько минут
  • AddMonths(int value) : добавляет к текущей дате несколько месяцев
  • AddYears(int value) : добавляет к текущей дате несколько лет

Например, добавим к некоторой дате 3 часа:

DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // 20.07.2015 18:30:25 Console.WriteLine(date1.AddHours(3)); // 20.07.2015 21:30:25

Для вычитания дат используется метод Subtract(DateTime date) :

DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // 20.07.2015 18:30:25 DateTime date2 = new DateTime(2015, 7, 20, 15, 30, 25); // 20.07.2015 15:30:25 Console.WriteLine(date1.Subtract(date2)); // 03:00:00

Здесь даты различаются на три часа, поэтому результатом будет дата «03:00:00».

Метод Substract не имеет возможностей для отдельного вычитания дней, часов и так далее. Но это и не надо, так как мы можем передавать в метод AddDays() и другие методы добавления отрицательные значения:

// вычтем три часа DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); // 20.07.2015 18:30:25 Console.WriteLine(date1.AddHours(-3)); // 20.07.2015 15:30:25

Кроме операций сложения и вычитания еще есть ряд методов форматирования дат:

DateTime date1 = new DateTime(2015, 7, 20, 18, 30, 25); Console.WriteLine(date1.ToLocalTime()); // 20.07.2015 21:30:25 Console.WriteLine(date1.ToUniversalTime()); // 20.07.2015 15:30:25 Console.WriteLine(date1.ToLongDateString()); // 20 июля 2015 г. Console.WriteLine(date1.ToShortDateString()); // 20.07.2015 Console.WriteLine(date1.ToLongTimeString()); // 18:30:25 Console.WriteLine(date1.ToShortTimeString()); // 18:30

Метод ToLocalTime() преобразует время UTC в локальное время, добавляя смещение относительно времени по Гринвичу. Метод ToUniversalTime() , наоборот, преобразует локальное время во время UTC, то есть вычитает смещение относительно времени по Гринвичу. Остальные методы преобразуют дату к определенному формату.

Источник

Работа с датой и временем в C# (DateTime)

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Работа с датой и временем в C#, в основном, проводится с использованием структуры DateTime . Сегодня мы рассмотрим, что из себя представляет структура DateTime и каким образом мы можем её использовать при работе с датами и временем в C#.

Про новые возможности работы с датой и временем в .NET 6 можно узнать в статье «Типы DateOnly и TimeOnly в C#«

Создание объекта для хранения даты и времени в C#

Для создания объекта типа DateTime мы можем воспользоваться одним из конструкторов структуры:

public DateTime() public DateTime(int year, int month, int day) public DateTime(int year, int month, int day, Calendar calendar) public DateTime(int year, int month, int day, int hour, int minute, int second) public DateTime(int year, int month, int day, int hour, int minute, int second, DateTimeKind kind) public DateTime(int year, int month, int day, int hour, int minute, int second, Calendar calendar) public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond) public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, DateTimeKind kind) public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar) public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, Calendar calendar, DateTimeKind kind) public DateTime(long ticks) public DateTime(long ticks, DateTimeKind kind)
DateTime empty = new DateTime(); DateTime date = new DateTime(2021,09,11); DateTime dateTime = new DateTime(2021, 09, 11, 10, 59, 59); Console.WriteLine(empty); Console.WriteLine(date); Console.WriteLine(dateTime);

В результате получим следующий вывод консоли:

В первом случае мы использовали конструктор по умолчанию и получили минимально возможную дату и время, во втором случае мы задали только дату и в третьем — дату и время.

При этом, если необходимо получить текущие значения даты и времени в C#, то можно воспользоваться следующими свойства DateTime :

DateTime now = DateTime.Now;//текущие дата и время DateTime nowUtc = DateTime.UtcNow; //текущие дата и время в UTC DateTime dateUtc = DateTime.Today; //текущая дата Console.WriteLine($"Now: "); Console.WriteLine($"nowUtc: "); Console.WriteLine($"Today ");

Работа с DateTime в C#

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

Как в C# получить из DateTime только дату или только время?

Для того, чтобы получить из объекта типа DateTime только дату или только время, необходимо воспользоваться его свойствами Date или TimeOfDay :

DateTime now = DateTime.Now;//текущие дата и время Console.WriteLine($"Дата и время: "); Console.WriteLine($"Дата: "); Console.WriteLine($"Время: ");

Обратите внимание, что время выводится вплоть до миллисекунд.

Как в C# получить из DateTime порядковый номер дня в году?

Чтобы получить порядковый номер дня в году, необходимо использовать свойство DayOfYear :

DateTime now = new DateTime(2021, 09, 13); int day = now.DayOfYear; if (day == 256) Console.WriteLine($"День: . Сегодня День программиста!");

Также, можно воспользоваться другими свойствами Day.. , чтобы получить порядковые номера дня:

DateTime now = new DateTime(2021, 09, 13); Console.WriteLine($"Порядковый номер дня в неделе: "); Console.WriteLine($"Порядковый номер дня в месяце: "); Console.WriteLine($"Порядковый номер дня в году: ");

Свойство DayOfWeek представляет собой тип enum (перечисление), которое может принимать следующие значения:

Как в C# добавить к текущей дате/времени секунду, минуту, час и т.д.?

Структура DateTime содержит ряд методов, позволяющих манипулировать значениями даты и времени:

public DateTime Add(TimeSpan value) public DateTime AddDays(double value) public DateTime AddHours(double value) public DateTime AddMilliseconds(double value) public DateTime AddMinutes(double value) public DateTime AddMonths(int months) public DateTime AddSeconds(double value) public DateTime AddTicks(long value) public DateTime AddYears(int value)

Обратите внимание, что большинство параметров в этих методах имеют тип данных double , что, технически, позволяет нам прибавлять к значениям даты и времени, например пол дня или пол часа:

DateTime now = new DateTime(2021, 09, 13); Console.WriteLine($"Прибавим 1 день: "); Console.WriteLine($"Прибавим пол часа: "); Console.WriteLine($"Прибавим один год: ");

Прибавим 1 день: 14.09.2021 0:00:00
Прибавим пол часа: 13.09.2021 0:30:00
Прибавим один год: 13.09.2022 0:00:00

При необходимости, мы можем передавать в методы Add. и отрицательные значения — тип double это позволяет. В результате мы будем не прибавлять, а отнимать определенное значение из DateTime

Как в C# от одного значения DateTime отнять другое значение DateTime?

Для вычитания из одного объекта DateTime другого объекта DateTime можно воспользоваться методом Subtract :

DateTime date1 = new DateTime(2021, 09, 13); DateTime date2 = new DateTime(2020, 09, 13); //дата на год меньше Console.WriteLine($"date1.Subtract: ");

Результатом выполнения метода Subtract является объект типа TimeSpan . В результате получим:

Форматирование дат в C#

Структура DateTime также содержит ряд методом, позволяющих форматировать значение DateTime и получать результат в виде строки:

DateTime date = DateTime.Now; Console.WriteLine(date.ToLongDateString()); Console.WriteLine(date.ToLongTimeString()); Console.WriteLine(date.ToShortDateString()); Console.WriteLine(date.ToShortTimeString());

Форматирование даты и времени в C# с использованием различных описателей формата рассмотрено в этой статье.

Итого

Сегодня мы познакомились с новым типом данных в C# — структурой DateTime , которая предназначена для работы с датой и временем. DateTime позволяет создавать объекты даты и времени в C#, прибавлять и отнимать от даты и времени значения, например, уменьшать текущую дату на день, месяц, год и так далее. Однако на DateTime работа с датой и временем не заканчивается, поэтому в дальнейшем мы рассмотрим и другие классы C#, предназначенные для определения и манипуляции значениями даты и времени в C#.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Источник

Оцените статью