2010-06-19 88 views

回答

9

根据您的用户信息,看起来您位于印度时区 - New Delhi区域比UTC提前5小时30分钟。日期/时间字符串末尾的“Z”表示UTC,这是有意义的:UTC时区的6:28是11:58。

您可以使用本地DateTime并使用ToUniversalTime将其转换为UTC - 但如果您想获取当前时间,则可以使用DateTime.UtcNow开始。

一旦你在UTC一个DateTime,此格式字符串会以同样的方式对其进行格式化:

yyyy-MM-ddTHH:mm:ss.fffffff00K 

这是非常相似的往返格式,只需与额外的两个零结束。那些硬编码为0,因为DateTime没有超过十分之一微秒的精度,而您的示例字符串已将其降至纳秒。

例如:

DateTime now = DateTime.UtcNow; 
string s = now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff00K", 
         CultureInfo.InvariantCulture); 

创造这样的事情:

2010-06-19T13:57:15.885578200Z 
+0

谢谢,我从答案XIII给出了我的想法。但你应该给予详细解答。 – 2010-06-19 16:49:56

1

对我来说看起来像Universaltime

Grz,Kris。

+0

用什么编辑发生了什么?我没有看到变化,为什么它需要? – XIII 2010-06-19 15:15:05

0

这看起来像一个日期时间的表示使用Round-trip ("O", "o") Format Specifier

var s = "2010-06-19T06:28:01.077148400Z"; 

var dt = DateTime.Parse(s, null, DateTimeStyles.RoundtripKind); 

Console.WriteLine(dt.ToString("o")); // prints "2010-06-19T06:28:01.0771484Z" 
+0

你看过打印结果吗? “2010-06-19T06:28:01.0771484Z” - 注意缺失的两个最后的0。 – 2010-06-19 13:59:20

+2

Skeet!你赢了!但是这一次! \ *摇动拳头* – dtb 2010-06-19 14:00:38

0

它看起来像在round-trip format格式化UTC。

+1

不太确切:在秒数上有9位小数位,而不是7位。 – 2010-06-19 13:58:49

+0

我站好了。再次。 :) – 2010-06-19 14:21:10