Я работаю над программой, которая требует возврата даты события.
Я ищу, а Date
не а DateTime
.
Есть ли тип данных, который возвращает только дату?
Нет, нет. DateTime
представляет некоторый момент времени, состоящий из даты и времени. Однако вы можете получить часть даты с помощью Date
свойства (которое является другим DateTime
с установленным временем 00:00:00
).
И вы можете получить отдельные свойства даты с помощью Day
, Month
и Year
.
Я создал простую структуру Date для случаев, когда вам нужна простая дата, не беспокоясь о временном отрезке, часовом поясе, локальном или utc и т. Д.
Date today = Date.Today;
Date yesterday = Date.Today.AddDays(-1);
Date independenceDay = Date.Parse("2013-07-04");
independenceDay.ToLongString(); // "Thursday, July 4, 2013"
independenceDay.ToShortString(); // "7/4/2013"
independenceDay.ToString(); // "7/4/2013"
independenceDay.ToString("s"); // "2013-07-04"
int july = independenceDay.Month; // 7
К сожалению, не в .Net BCL. Даты обычно представлены как объект DateTime со временем, установленным на полночь.
Как вы можете догадаться, это означает, что у вас есть все сопутствующие проблемы с часовыми поясами, хотя для объекта Date вам не нужно абсолютно никакой обработки часового пояса.
источник
date
для чего-либо - плохая идея, если вы не уверены на 100%, что ваше приложение будет работать только в одном часовом поясе. Сохранение всего какdatetime
дает вам лучшее из обоих миров, в том числе, что наиболее важно, простой способ избежать кошмаров часового пояса, если конфигурация часового пояса вашего сервера когда-либо изменится ... и начинает записывать данные способами, которых вы не ожидали.Datetime
может спасти вас там,date
не может вообще, и станет невероятно сложно исправить, если вы когда-нибудь начнетеdate
записывать с неправильным контекстом часового пояса.Создайте класс-оболочку. Что-то вроде этого:
И выставляйте все,
value
что хотите.источник
DateTimeKind.Unspecified
так что , когда он получает сериализовать десериализации без преобразования (дата может меняться в зависимости от различных в часовых поясах).DateTimeKind.Utc
. Не устанавливайте его,DateTimeKind.Unspecified
потому что это гарантирует сериализацию / десериализацию с включенным смещением часового пояса! Календарная дата одинакова независимо от часового пояса, поэтому не позволяйте системе настраивать ее.Тип Date - это просто псевдоним типа DateTime, используемого VB.NET (например, int становится Integer). Оба эти типа имеют свойство Date, которое возвращает объект с временной частью, установленной на 00:00:00.
источник
DateTime имеет свойство Date, которое можно использовать для изоляции части даты. Метод ToString также хорошо справляется с отображением только части даты, когда часть времени пуста.
источник
Объект DateTime имеет свойство, которое возвращает только часть значения даты.
источник
DateTime
значение 0:00:00Нет
Date
DataType.Однако вы можете использовать
DateTime.Date
только дату.НАПРИМЕР
источник
DateTime.Now.Date
такое же, какDateTime.Today
. Существует объект,DateTime.UtcNow
который возвращает значение даты и времени в формате всемирного времени (UTC), но для Today не существует метода или свойства, эквивалентного UTC;DateTimeKind.UtcNow.Date
подходящее выражение.Вы можете вернуть DateTime, где время составляет 00:00:00, и просто проигнорировать его. Даты обрабатываются как целые числа отметки времени, поэтому имеет смысл комбинировать дату со временем, поскольку оно в любом случае присутствует в целом числе.
источник
Для этого вам нужно использовать дату, но игнорировать значение времени.
Обычно датой является DateTime со временем
00:00:00
DateTime
Тип имеет.Date
свойство , которое возвращаетDateTime
с установленным значением времени , как указано выше.источник
источник
Вы можете попробовать одно из следующего:
Но в BCL нет типа «Дата».
источник