如果我運行像一個片段:UtcNow和現在是相同的日期時間?他們知道他們不同嗎?
bool areTheyTheSame = DateTime.UtcNow == DateTime.Now
我究竟會得到什麼? DateTime返回是否知道它的時區,以便我可以比較?
我的具體問題是,我試圖構建一個類似緩存的API。如果需要一個DateTime AbsoluteExpiration,是否必須強制我的API的用戶知道是否給我一個UTC時間或基於時區的時間?
[編輯]這太問題是我的問題,也是極其相關:Cache.Add absolute expiration - UTC based or not?
[編輯]只是爲了澄清對未來的讀者,在DateTimeKind是什麼,是不同的。未定義的DateTimeKind常常是一個問題,例如,當您從數據庫中取出某個數據庫時,會出現這種問題。設置DateTimeKind在DateTime構造...
[編輯] JonSkeet寫了一個可愛的博客文章,譴責這種行爲,並提供瞭解決方案:http://noda-time.blogspot.co.uk/2011/08/what-wrong-with-datetime-anyway.html
我沒有嘗試,但主要是因爲我很驚訝,這個問題是不是已經SO並認爲這將是對人有益的。也許有點懶惰,但我發誓,主要是好心! ;) – 2010-07-12 14:51:46
我想看到的關鍵測試可能是,「Console.WriteLine(utcNow.ToUniversalTime()== utcNow)」的結果;「... – 2010-07-12 14:52:59
+1。另外,還有一個不同的DateTimeKind。有另一個方向的'ToLocalTime()'。小心'DateTimeKind.Undefined',這些時間總是被轉換('ToUniversalTime'將它們當作本地時間,'ToLocalTime'視爲UTC)。 – 2010-07-12 14:57:28