2012-02-08 56 views
4

我需要在沒有utcOffset的情況下以往返格式的DateTime.Now的值。基於這個MSDN article如果你創建了一個沒有UtcOffset的DateTime的新實例,它會產生我想要的格式。從DateTime.Now刪除UtcOffset

DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0); 
// Displays 2008-04-10T06:30:00.0000000 

,但如果我用DateTime.Now,我得到的字符串中的偏移:

DateTime.Now.ToString("o") 
// Displays 2012-02-08T14:11:12.8378703-05:00 

我可以只使用字符串或填充DateTime實例沒有它,但我想知道是否有一種刪除UtcOffset的方法。

回答

5

的UTC偏差(例如, 「-05:00」 或 「Z」)被如果DateTime.Kind既不Utc也不Local刪去。

您可以創建這樣一個DateTime值如下:

DateTime.UtcNow.ToString("o"); 
// "2012-02-08T19:19:38.5767158Z" 

new DateTime(DateTime.UtcNow.Ticks).ToString("o"); 
// "2012-02-08T19:19:38.5767158" 

new DateTime(DateTime.Now.Ticks).ToString("o"); 
// "2012-02-08T14:19:38.5767158" 
+0

看起來我大約76秒打你... ;-) – 2012-02-08 19:25:42

+0

我會選擇這個,因爲我不想去掉Z,所以Ticks的例子非常完美。謝謝。 – Josh 2012-02-08 19:28:42

3

如果我明白你想要什麼,你可以使用DateTime.UtcNow

DateTime.Now.ToString("o") 
DateTime.UtcNow.ToString("o") 

輸出:

 
2012-02-08T13:18:22.4459488-06:00 
2012-02-08T19:18:22.4599488Z 
0

我只是歸零挖掘出使用

new DateTimeOffset(Date_Goes_Here, TimeSpan.Zero);