在C#中,如何以下列格式获取当前的DateTime?的 2011-08-10T21:36:01.6327538Z
答案 0 :(得分:22)
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
添加到结尾
答案 1 :(得分:2)
如果你想要你的UTC时间(这是Z所暗示的)那么你需要确保它们是UTC时间......
即
DateTime.UtcNow.ToString("O");
或假设您知道您的约会时间是本地的......
DateTime foo = MethodThatReturnsALocalTime();
foo.ToUniversalTime().ToString("O");
FWIW:DateTime.UtcNow比DateTime.Now更快,因为它不需要进行时区查找,在Compact Framework上,由于某种原因差异非常明显。
答案 2 :(得分:1)
试试这个:
var xs = DateIime.Now;
var frmtdDatetime = xs.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff");
并查看此msdn link
答案 3 :(得分:0)
你可以尝试:
DateTime.Now.ToString("o");
还包括时区组件。 - 或者 -
DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff")