2011-10-12 41 views
12

在C#中,如何以下列格式獲取當前日期時間? 2011-08-10T21:36:01.6327538ZC# - 格式化當前時間

+1

只是一個說明,我不認爲它會做祖魯時間表示法。即它不會添加「Z」並轉換爲UTC/GMT(我可能是錯的,在這種情況下,停止閱讀)。如果您的時間已經是UTC/GMT,那麼您可以在之後添加「Z」。或者,如果您想要一個通用時間戳,但不想轉換本地時間,則可以使用「zzz」鍵打印UTC的偏移量,這是一種通用的通用日期符號。 – gnomed

回答

16
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ") 

記住DateTime.Now有時只精確到千分之一秒,取決於系統時鐘。 This page顯示以下內容:

可以顯示非常小的秒數的小數單位,例如千分之一秒或千分之幾秒。但是,這些值可能沒有意義。日期和時間值的精度取決於系統時鐘的分辨率。在Windows NT 3.5及更高版本和Windows Vista操作系統上,時鐘的分辨率大約爲10-15毫秒。

但是,如果您自己填寫DateTime,則可以使其更精確。我不知道任何其他比DateTime.UtcNow更精確的內置庫。

另外,DateTime.UtcNow.ToString("o")會給你一個序號日期時間字符串。這並沒有在最後指定時區,所以如果你正在處理Utc,你仍然需要添加Z到最後

+0

雖然爲什麼Z我不確定.. –

+0

他希望把Z放在最後。 –

+0

對不起,這就是我的意思 - 這就是爲什麼我給你+1。我不知道他爲什麼忘了Z. –

0

試試這個:

var xs = DateIime.Now; 
    var frmtdDatetime = xs.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff"); 

,並檢查了這msdn link

0

您可以嘗試兩種:

DateTime.Now.ToString("o"); 

其中還包括時區組件。 - 或 -

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") 
2

如果你想要UTC的時間(這是Z的含義),那麼你需要確保它們是UTC時間......

DateTime.UtcNow.ToString("O"); 

或假設你知道你的日期時間是當地的...

DateTime foo = MethodThatReturnsALocalTime(); 
foo.ToUniversalTime().ToString("O"); 

FWIW:DateTime.Ut cNow比DateTime.Now快,因爲它不需要在Compact Framework上進行時區查找,因爲某些原因,差異可能非常明顯。