为什么是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.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
来覆盖这两种类型,并选择午夜作为一天中的时间。