2012-07-06 58 views
-2

我的下一个简单的代码...是使用ToString(“U”)的.NET DateTime越野车吗?

Console.WriteLine(default(DateTime).Date.ToString("U")); 

的,发出的文字是(我有一个西班牙语语言安装): “lunes,01日enero日0001 3:00:00”

为什么从3小时开始,而不是0?这是一个错误?

+5

嗯,这是*不*'DateTime.Now'。你为什么不向我们展示你的真实代码? – 2012-07-06 21:23:36

+0

计算机上的当地时间是什么? “Now”包含小时/分钟/秒,“U”格式说明符也是如此。 – Oded 2012-07-06 21:24:28

+0

对不起,我简化了代码忘记把日期属性(它只获取日期部分,没有时间)。 – 2012-07-07 05:00:56

回答

1

那么除非你有一台时间机器或DateTime真的越野车,这不是你发布的代码,它使用DateTime.Now的输出。

我怀疑你的代码是真的使用DateTime.MinValue(或new DateTime()),而且你看到凌晨3点还在原因是(为per the documentation):

的模式是一样的“F “模式。但是,格式化之前,DateTime值自动转换为UTC。

所以,我怀疑你是在一个时区,在当地时间凌晨3点凌晨3点午夜。 (DateTimeZone.MinValue拥有的Unspecified“厚道”,所以当被要求转换为UTC将被视为本地。DateTime是围绕这方面bit of a mess

+0

谢谢乔恩!我的错误:我想说“DateTime.Now.Date”,现在已经在问题中解决了。是的!我在UTC - 4的位置(冬季时间调整一小时,我猜)。 – 2012-07-07 05:03:41

+0

@NéstorSánchezA.:即使'DateTime.Now.Date'(它更简单地写成'DateTime.Today')也不应该是0001年1月1日。无论如何,很高兴它现在全部排序。 – 2012-07-07 06:33:02

+0

我认罪。收到的原始值是DateTime默认值。问题已更正。 – 2012-07-07 09:06:59