2012-07-06 63 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