2009-10-06 48 views
2

我正在處理一個規範,它需要一個特殊的日期時間格式,但我不一定非得使用它。如何格式化DateTime或TimeZone/TimeZoneInfo以顯示三個字母?

在處理時間,一個OFX(1而不是2)的日期時間必須加蓋(或者DTCLIENT或DTSERVER)的格式是這樣的:
20071015021529.000

然而,在實施例中,示出:

20071015021529.000[-8:PST]  

我沒有用的

DateTime.Now.ToString("yyyyMMddHHmmss.fff") 

聲明中的第一個問題我甚至能弄清楚如何讓%z以獲得正確的偏移量。

三個字母的時區碼是我絆倒的地方。有沒有一種簡單的方法來獲得.net,或者我最終會編寫代碼來輸出和解析我需要的?

+0

@Jon Skeet你知道,只要看看我可以從我當前的網上銀行網站上下載的ofx數據,我會說轉換到GMT並將其刷到每個DT實體的客戶端是常見的做法。 @Mahin我看了一下TimeZoneInfo,我想如果我必須爲這個數據實現一個客戶端,我會和GMT一起使用它。 @Daniel Pryden我認爲擁有客戶端的語言環境過程並且從服務器提供通用時間戳是最好的。 感謝所有的輸入! – 2009-10-06 20:36:05

回答

2

你需要找出它需要的確切的3個字母代碼。例如,Europe/Paris會給出什麼?就我個人而言,我會將數據轉換爲UTC格式,除非您確實需要保留時區信息。

5

三個字母的時區代碼在各個國家並不是唯一的,並且沒有完全標準化。例如,「CST」可以是「中央標準時間(美國)」或「中國標準時間」的縮寫。這是正確的取決於您的區域設置。

據我所知,在.NET Framework中沒有內置功能來查找這樣的代碼,因此您需要自己實現它。

此外(但你可能知道這一點),你需要小心你如何實現這個功能。 UTC偏移和時區代碼之間不一定是一一對應的。例如,UTC-0700可以是美國山區標準時間(MST)美國太平洋夏令時(PDT)。

4

如果你使用r它會給你RFC格式。它會幫助你嗎?

String.Format("{0:r}", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123 

你也可以check this SO link,如果它可以幫助你。

相關問題