为什么DateTime.Date默认为午夜

时间:2014-10-22 13:20:55

标签: c# datetime

我找不到关于why的任何详细说明DateTime对象的Date属性默认为午夜。我知道这是通过我自己的工作以及MSDN,但我试图理解这背后的原因。我找不到任何文章详细说明为什么会这样。

编辑:详细说明评论中提出的一些要点。

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

在这个例子中我会假设它默认为21:00:00.000-我再次知道它没有。

3 个答案:

答案 0 :(得分:1)

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

所以每个DateTime都有一个时间组件。这就像你说的那样:给我一个小时没有分钟。每小时也可以用60分钟表示。使用dt.Date,您明确表示您希望DateTime“没有”时间,这意味着午夜,并且是new DateTime(dt.Year,dt.Month,dt.Day)的快捷方式。

答案 1 :(得分:0)

据我所知,除了作为约会的开始,它就在那里你可以忽略DateTime的Time部分。

我确信有更好,更详细的解释(而且我确定有人会在某处提到NodaTime的使用 - 可能是Jon Skeet本人 - 而且是Date类)

答案 2 :(得分:0)

因为它必须设置为某种东西,而午夜(即全零)的价值与任何价值一样好!

说真的,你要求约会是有意义的,而00:00:00是那个约会的开始。框架中没有Date类型,设计师重载DateTime来覆盖两者,午夜被选为当天的时间。