我有下一个简单的代码......
Console.WriteLine(default(DateTime).Date.ToString("U"));
发出的文本是(我有一个西班牙语安装):“lunes, 01 de enero de 0001 3:00:00”
为什么它从 3 小时开始,而不是 0?这是一个错误?
好吧,除非你有一台时间机器或者DateTime
真的有问题,否则这不是你发布的代码的输出,它使用DateTime.Now
.
我怀疑您的代码确实在使用DateTime.MinValue
(或new DateTime()
),而您看到凌晨 3 点的原因是(根据文档):
该图案与“F”图案相同。但是,DateTime 值在格式化之前会自动转换为 UTC。
所以我怀疑你所在的时区是当地时间 0001 年 1 月 1 日午夜是 UTC 时间凌晨 3 点。(DateTimeZone.MinValue
有一种“种类” Unspecified
,因此当被要求转换为 UTC 时将被视为本地。在这个区域DateTime
有点混乱。)