我找不到关于why
的任何详细说明DateTime对象的Date属性默认为午夜。我知道这是通过我自己的工作以及MSDN,但我试图理解这背后的原因。我找不到任何文章详细说明为什么会这样。
编辑:详细说明评论中提出的一些要点。
string a = "2014-10-22 09:00 PM";
DateTime d = DateTime.Parse(a);
在这个例子中我会假设它默认为21:00:00.000-我再次知道它没有。
答案 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
来覆盖两者,午夜被选为当天的时间。