我正在制作一个程序,要求返回一个事件的日期。
我正在寻找Date
,而不是DateTime
。
是否有只返回日期的数据类型?
答案 0 :(得分:116)
不,没有。 DateTime
表示由日期和时间组成的某个时间点。但是,您可以通过Date
属性(另一个DateTime
检索日期部分,时间设置为00:00:00
)。
答案 1 :(得分:19)
当你需要一个简单的约会而不用担心时间部分,时区,本地和utc等时,我创建了一个简单的Date struct。
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
答案 2 :(得分:13)
不幸的是,不在.Net BCL中。日期通常表示为DateTime对象,时间设置为午夜。
你可以猜到,这意味着你周围有所有伴随的时区问题,即使对于Date对象你也绝对不需要时区处理。
答案 3 :(得分:9)
创建一个包装类。像这样:
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
。
答案 4 :(得分:4)
Date类型只是VB.NET使用的DateTime类型的别名(如int变为Integer)。这两种类型都有一个Date属性,它返回时间部分设置为00:00:00的对象。
答案 5 :(得分:3)
答案 6 :(得分:2)
DateTime对象有一个Property,它只返回值的日期部分。
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);
}
答案 7 :(得分:2)
没有Date
数据类型。
但是,您可以使用DateTime.Date
来获取日期。
<强> E.G。强>
DateTime date = DateTime.Now.Date;
答案 8 :(得分:1)
您可以返回时间部分为00:00:00的DateTime,然后忽略它。日期作为时间戳整数处理,因此将日期与整数中存在的时间结合起来是有意义的。
答案 9 :(得分:1)
为此,您需要使用日期,但忽略时间值。
通常日期是DateTime,时间为00:00:00
DateTime
类型具有.Date
属性,该属性返回DateTime
,其时间值设置如上。
答案 10 :(得分:1)
public class AsOfdates
{
public string DisplayDate { get; set; }
private DateTime TheDate;
public DateTime DateValue
{
get
{
return TheDate.Date;
}
set
{
TheDate = value;
}
}
}
答案 11 :(得分:0)
您可以尝试以下方法之一:
DateTime.Now.ToLongDateString();
DateTime.Now.ToShortDateString();
但是BCL中没有“日期”类型。
答案 12 :(得分:0)
.NET 6 似乎终于引入了仅日期类型。它将被称为 DateOnly
,并且还会有一个 TimeOnly
类型添加到 System
命名空间中的 BCL。
它已在预览版 4 中提供。阅读this blog article 了解更多详情。