2011-08-09 20 views
15

可能重複ssTZD格式:
datetime to string with time zone如何獲得DateTime.Now()在YYYY-MM-DDTHH:使用C#

這是W3C標準日期的1毫米時間格式,我想在站點地圖中使用。這個日期時間標準是:

完成日期以及時,分和秒: YYYY-MM-DDTHH:MM:ssTZD其中TZD =時區指示符(Z或+ HH:MM或-hh:毫米)(如1997-07-16T19:20:30 + 01:00)

我使用下面的代碼來得到當前日期時間在格式:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssTZD"); 

但是這給:2011-08 -10T02:27:20TZD

顯然,DateTime.Now不能識別參數中的「TZD」。請幫忙。我怎樣才能獲得這種格式的當前日期時間?

+0

'DateTime.Now'者甚至從未見過該參數。這是'ToString'方法的一個參數。 – CodesInChaos

回答

34

使用zzz格式說明符以小時和分鐘的形式獲取時區偏移量。您還希望使用HH格式說明符以24小時格式獲取小時。

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz") 

結果:

2011-08-09T23:49:58+02:00 

一些區域性設置使用期限,而不是冒號的時間,所以你可能需要使用文字冒號,而不是時間分隔符:

DateTime.Now.ToString("yyyy-MM-ddTHH':'mm':'sszzz") 

Custom Date and Time Format Strings

+0

怎麼可能你有24小時的mod和我12h的模式? – genesis

+0

另外一個提到字面冒號;人們往往會忘記':'代表當前格式提供者的時間分隔符。 –

+1

傳遞'CultureInfo.InvariantCulture'是確保':'不被翻譯的一種方法。此外,它確保使用公曆,因爲當前文化的日曆也是可能的。 –

3

試試這個:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz"); 

zzz是時區偏移。代替

+0

有沒有辦法增加毫秒? –

+0

哦,是的!我發現它..: fff - 是秒的分數。'code' DateTime.Now.ToString(「yyyy-MM-ddThh:mm:ss:fffzzz」); –

9

使用ZZZ TZD

實施例:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz"); 

響應:

2011-08-09T11:50:00:02+02:00