[英]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.