Я работаю над программой, для которой требуется дата получения события. Я ищу «Дата», а не «DateTime». Должен быть тип данных, который возвращает только дату ... есть?Дата против DateTime
ответ
Вы можете вернуть DateTime, где временная часть 00:00:00 и просто игнорировать ее. Даты обрабатываются как целые числа времени, поэтому имеет смысл комбинировать дату со временем, которое присутствует в целом в любом случае.
К сожалению, не в .Net BCL. Даты обычно представляются как объект DateTime со временем, установленным до полуночи.
Как вы можете догадаться, это означает, что у вас есть все связанные с ним проблемы с часовым поясом, даже если для объекта Date вы абсолютно не хотите обрабатывать часовой пояс.
Вы можете попробовать одно из следующих действий:
DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();
Но нет типа «Дата» в BCL.
Тип даты - это просто псевдоним типа DateTime, используемого VB.NET (например, int становится Integer). Оба этих типа имеют свойство Date, которое возвращает вам объект с временной частью, установленной в 00:00:00.
Правда. [Страница документа MSDN для типа даты VB.NET] (http://msdn.microsoft.com/en-us/library/3eaydw6e.aspx): * Соответствующий тип в .NET Framework - это [System.DateTime] (http://msdn.microsoft.com/en-us/library/system.datetime.aspx). * – miroxlav
Для этого вам необходимо использовать дату, но игнорировать значение времени.
Обычно дата будет DateTime со временем 00:00:00
Тип DateTime
имеет .Date
свойство, которое возвращает DateTime
со значением времени, установленного, как описано выше.
Объект DateTime имеет свойство, которое возвращает только часть даты значения.
public static void Main()
{
System.DateTime _Now = DateAndTime.Now;
Console.WriteLine("The Date and Time is " + _Now);
//will return the date and time
Console.WriteLine("The Date Only is " + _Now.Date);
//will return only the date
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
Этот ответ неверен. Дата возвращает 'DateTime' с временем, установленным в 0:00:00 –
Создайте класс обертки. Что-то вроде этого:
public class Date:IEquatable<Date>,IEquatable<DateTime>
{
public Date(DateTime date)
{
value = date.Date;
}
public bool Equals(Date other)
{
return other != null && value.Equals(other.value);
}
public bool Equals(DateTime other)
{
return value.Equals(other);
}
public override string ToString()
{
return value.ToString();
}
public static implicit operator DateTime(Date date)
{
return date.value;
}
public static explicit operator Date(DateTime dateTime)
{
return new Date(dateTime);
}
private DateTime value;
}
И разоблачить независимо от value
вы хотите.
Неявные и явные неверны? – Behrooz
Я бы предположил, что ваш конструктор должен установить [DateTime.Kind] (http://msdn.microsoft.com/en-us/library/system.datetime.kind (v = vs.110) .aspx) на ' DateTimeKind.Unspecified', так что при сериализации он десериализуется без преобразования (может изменить дату, основанную на разных часовых поясах). – OffHeGoes
@OffHeGoes Установите DateTime.Kind в 'DateTimeKind.Utc'. * Не устанавливайте его в 'DateTimeKind.Unspecified', потому что это гарантирует, что он будет сериализован/десериализован с включенным смещением часового пояса! Календарная дата одинакова независимо от часового пояса, поэтому не позволяйте системе ее корректировать. – Suncat2000
Я создал простой Date struct для тех случаев, когда вам нужна простая дата, не беспокоясь о временной части, часовых поясах, локальных против 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
Спасибо! Это полезно. – garfbradaz
Там нет Date
DataType.
Однако вы можете использовать DateTime.Date
, чтобы получить только дату.
E.G.
DateTime date = DateTime.Now.Date;
Существует структура Date, и объекты могут быть объявлены как тип Date. –
@KalebAnderson не в реализации по умолчанию .NET, нет. Если вы говорите о дате VB.net, это все равно DateTime. –
'DateTime.Now.Date' совпадает с' DateTime.Today'. Существует 'DateTime.UtcNow', который возвращает значение даты-времени как универсальное время (UTC), но для Today нет эквивалентного метода или свойства UTC; 'DateTimeKind.UtcNow.Date' является подходящим выражением. – Suncat2000
public class AsOfdates
{
public string DisplayDate { get; set; }
private DateTime TheDate;
public DateTime DateValue
{
get
{
return TheDate.Date;
}
set
{
TheDate = value;
}
}
}
Внесение некоторых объяснений в ваш ответ было бы полезно. – Guanxi
- 1. Rail TimeWithZone против Дата
- 2. Дата против TimeStamp против календаря?
- 3. DateTime в Javascript Дата
- 4. PHP Дата новообращенный DateTime
- 5. DateTime только дата?
- 6. DateTime picker неправильная дата
- 7. PostgreSQL Дата C# DateTime
- 8. дата из столбца datetime
- 9. Дата разделения от DateTime
- 10. Oracle дата время datetime
- 11. Недействительный Дата DateTime?
- 12. Получить DateTime знать Дата
- 13. Datetime нужна только дата
- 14. Читабельно дата DateTime
- 15. Дата выпуска (DATETIME)
- 16. Преобразовать DateTime в Дата
- 17. Extra Дата от DATETIME
- 18. Анализ Дата Дата DateTime с двоичным выражением
- 19. Дата против новой Дата в JavaScript
- 20. Проверка даты DateTime против другой DateTime
- 21. Некорректное Javascript Дата в Chrome против Firefox
- 22. Javascript Дата и JSON DateTime
- 23. Больше, чем дата (не datetime)
- 24. Bootstrap DateTime-Picker: Дата начала
- 25. Searching Дата От DateTime таблицы
- 26. convert Datetime to simple Дата
- 27. дата Javascript для хз: DATETIME
- 28. PHP альтернативы 5.1.6 Дата/DateTime
- 29. новообращенного Javascript дата C# DateTime
- 30. Дата, DateTime и часовой пояс
Если вы используете значение DateTime в качестве даты, установите Kind в формате UTC. Никаких корректировок часовых поясов. DateTime date = DateTime.SpecifyKind (DateTime.Today, DateTimeKind, Utc); – Suncat2000
Да, я могу говорить по опыту, что использование «даты» для чего-то плохое, если вы на 100% не уверены, что ваше приложение будет работать только в одном часовом поясе. Сохранение всего, поскольку 'datetime' дает вам лучшее из обоих миров, в том числе наиболее критически, простой способ избежать кошмаров часовых поясов, если настройки вашего часового пояса вашего сервера когда-либо меняются ... и начинает писать данные так, как вы этого не ожидали. 'Datetime' может спасти вас там,' date' вообще не может и будет очень трудно исправить, если вы когда-нибудь начнете писать «date» с неправильным контекстом часового пояса. – Kelseydh