【问题标题】:C# - Formatting current timeC# - 格式化当前时间
【发布时间】:2011-12-06 13:43:24
【问题描述】:

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

【问题讨论】:

  • 只是一个注释,我不认为它会做祖鲁时间符号。即它不会添加“Z”并转换为 UTC/GMT(我可能是错的,在这种情况下,请停止阅读)。如果您的时间已经在 UTC/GMT 中,那么您可以在之后添加“Z”。或者,如果您想要一个通用时间戳但不想转换本地时间,您可以使用“zzz”键打印与 UTC 的偏移量,这是一种普遍接受的通用日期表示法。

标签: c# datetime date utc gmt


【解决方案1】:

试试这个:

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

看看这个msdn link

【讨论】:

    【解决方案2】:

    你可以试试:

    DateTime.Now.ToString("o");
    

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

    DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff")
    

    【讨论】:

      【解决方案3】:
      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

      【讨论】:

      • 他想要一个 Z 放在最后。
      • 哦,对不起,这就是我的意思——这就是我给你 +1 的原因。我不知道他为什么要一个 Z。
      • @rangitatanz:Z(我相信源自“零时”)表示它是 UTC 时间,所以它实际上应该是 DateTime.UtcNow
      • 您会注意到 stackoverflow.com 还在其时间戳末尾添加了 Z
      【解决方案4】:

      如果您想要 UTC 时间(这就是 Z 的含义),那么您需要确保它们是 UTC 时间...

      DateTime.UtcNow.ToString("O");
      

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-01-16
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多