C# - 格式化当前时间

时间:2011-10-12 23:58:34

标签: c# datetime date utc gmt

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

4 个答案:

答案 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")