为什么是DateTime.日期默认为午夜

本文关键字:午夜 默认 日期 DateTime 为什么 | 更新日期: 2023-09-27 18:27:29

我在why上找不到任何详细说明DateTime对象的Date属性默认为午夜。通过我自己的工作和MSDN,我知道这是真的,但我正在努力理解这背后的原因。我找不到任何文章详细说明为什么会这样。

编辑:详细阐述评论中提出的一些问题。

string a = "2014-10-22 09:00 PM";
DateTime d = DateTime.Parse(a);

在这个例子中,我假设它会默认为21:00:00.000——我知道它不会。

为什么是DateTime.日期默认为午夜

DateTime.Date表示日期,与DateTime.Today在午夜返回当前日期的DateTime(与DateTime.Now相反)的方式相同。那么,你希望它会返回什么呢?DateTime是一个结构,它总是包含一个时间,即使它被设置为0:00:00

因此,每个DateTime都有一个时间分量。这就像你会说:给我一个小时没有分钟。每小时也可以用60分钟来表示。通过使用dt.Date,您明确表示您希望DateTime"没有"时间,这意味着午夜,是new DateTime(dt.Year,dt.Month,dt.Day)的快捷方式。

据我所知,除了是日期的开始,它还在那里,所以您可以忽略DateTime的Time部分。

我相信有更好、更详细的解释(我相信有人会在某个地方提到NodaTime的使用——可能是Jon Skeet自己——这是Date类)

因为它必须设置为某个值,而午夜(即全零)是一个和任何值一样好的值!

但说真的,当你要求约会时,00:00:00是这个日期的开始,这是有道理的。框架中没有Date类型,设计者重载了DateTime来覆盖这两种类型,并选择午夜作为一天中的时间。