20

在 C# 中,如何获取以下格式的当前 DateTime?2011-08-10T21:36:01.6327538Z

4

4 回答 4

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

请记住,DateTime.Now 有时只能精确到千分之一秒,具体取决于系统时钟。 此页面显示以下内容:

可以显示非常小的一秒小数单位,例如千分之一秒或十万分之一秒。但是,这些值可能没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率约为 10-15 毫秒。

但是,如果您DateTime自己填充,则可以使其更精确。我不知道任何其他比DateTime.UtcNow.

此外,DateTime.UtcNow.ToString("o")会给你一个序数日期时间字符串。这没有在末尾指定时区,因此Z如果您正在处理 Utc,您仍然需要添加到末尾

于 2011-10-13T00:03:50.847 回答
3

如果您想要 UTC 时间(这是 Z 所暗示的),那么您需要确保它们是 UTC 时间......

IE

DateTime.UtcNow.ToString("O");

或假设您知道您的日期时间是本地的...

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

FWIW: DateTime.UtcNow 比 DateTime.Now 快,因为它不需要进行时区查找,在 Compact Framework 上,由于某种原因,这种差异可能非常明显。

于 2011-10-13T00:53:48.013 回答
1

试试这个:

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

并查看此msdn 链接

于 2011-10-13T00:02:20.173 回答
1

您可以尝试:

DateTime.Now.ToString("o");

其中还包括时区组件。- 或者 -

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff")
于 2011-10-13T00:03:02.913 回答