【问题标题】:DateTime check if it is in UTC formatDateTime 检查它是否为 UTC 格式
【发布时间】:2025-12-25 10:10:11
【问题描述】:

我对日期时间格式有疑问。
我有一个字符串,代表我的日期时间: “2014-08-01T10:12:11.0Z”。实际上,据我了解,它是 UTC 格式的日期时间,因为“Z”显示了与 UTC 的偏移量。

然后我尝试执行

DateTime.TryParseExact("2014-08-01T10:12:11.0Z", "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out value_);

(其中 value_ 只是我新创建的 DateTime 对象)只是为了检查我的字符串是否代表 UTC 时间。这个表达式给了我'假'。

所以,我想知道,我应该传递什么格式而不是“yyyy-MM-ddTHH:mm:ssZ”,还是应该更改其他格式?

【问题讨论】:

    标签: c# date datetime formatting


    【解决方案1】:

    该字符串末尾的.0 是十分之一秒,因此您需要为其添加一个解析字符:F

    另外,Z 的解析字符是K,而不是Z

    所以要解析那个字符串,你需要这样做:

    DateTime.TryParseExact("2014-08-01T10:12:11.0Z", "yyyy-MM-ddTHH:mm:ss.FK", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out value);
    

    另请注意,如果您希望解析字符串中的时区信息(即,如果它不是 UTC 时间),则将 Z 替换为时区偏移量,+ve 或 - ve:

    "2014-08-01T10:12:11.0-07:00" // Note time zone offset at the end.
    

    【讨论】:

    • 设计日期/时间逻辑以将值 "purely 视为“不透明”的东西是一个非常好的主意,不要测试或做任何假设关于基础数字或其他值。如果您想要“祖鲁时间”,请要求将该值转换为“时区零”,并相信它会。如果您想要“本地时间'这里'”(或任何地方......),请明确要求。