簡體   English   中英

為什么DateTime.ToString沒有按預期給出時區

[英]Why does DateTime.ToString not give timezone as expected

如果我有這個代碼:

                DateTime dt = DateTime.UtcNow;
                string sDate = dt.ToString("yyyy-MM-dd HH:mm:ss.fff zz");

我的sDate看起來像這樣:

"2013-04-07 21:05:15.396 +10"

這是當前的UTC日期時間(晚上9:05),但結尾是“+10”,這是我當地的時區。

我原以為這個:

"2013-04-07 21:05:15.396 +00"

這是怎么回事?

那是因為文檔說(強調我的):

使用DateTime值,“zz”自定義格式說明符表示本地操作系統的時區與UTC的簽名偏移量,以小時為單位。 它不反映實例的DateTimeKind屬性的值。 因此,建議不要將“zz”格式說明符與DateTime值一起使用。

因此, zz格式說明符始終輸出本地時區的UTC偏移量,即使用於格式化UTC時間也是如此。

DateTime.ToString ,當您不將CultureInfo傳遞給它時,默認為當前文化。 如果您當前的文化是+10,那么這就解釋了為什么你看到+10。 您可以打開各種FxCop和代碼分析規則,以便在沒有CultureInfo情況下調用ToString時發出警告

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM