代码之家  ›  专栏  ›  技术社区  ›  Abdulsattar Mohammed

Windows事件日志的时间格式是什么?

  •  2
  • Abdulsattar Mohammed  · 技术社区  · 15 年前

    这是哪种格式的 2010-06-19T06:28:01.077148400Z 属于什么?

    它代表2010年6月19日上午11:58:01。

    我尝试将字符串解析为datetime.parse(),datetime对象表示上述时间。现在我想再次将datetime对象转换为格式。我该怎么做?

    4 回复  |  直到 15 年前
        1
  •  9
  •   Jon Skeet    15 年前

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

    你可以坐本地的 DateTime 并使用将其转换为UTC ToUniversalTime -但是如果你想得到当前的时间,你可以使用 DateTime.UtcNow 首先。

    一旦你有了 日期时间 在UTC中,此格式字符串将以相同的方式对其进行格式化:

    yyyy-MM-ddTHH:mm:ss.fffffff00K
    

    这与往返格式非常相似,只是结尾有额外的两个零。这些是硬编码为0的 日期时间 精度不超过十分之一微秒,而您的示例字符串的精度则下降到了纳秒。

    例如:

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

    创建如下内容:

    2010-06-19T13:57:15.885578200Z
    
        2
  •  1
  •   Femaref    15 年前

    看起来像 Universaltime 对我来说。

    Grz,克里斯。

        3
  •  0
  •   dtb    15 年前

    这看起来像是使用 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"
    
        4
  •  0
  •   Stephen Cleary    15 年前

    看起来像是UTC格式 round-trip format .