协慌网

登录 贡献 社区

给定一个 DateTime 对象,如何获取字符串格式的 ISO 8601 日期?

鉴于:

DateTime.UtcNow

如何获得表示符合 ISO 8601格式的相同值的字符串?

请注意,ISO 8601 定义了许多相似的格式。我正在寻找的特定格式是:

yyyy-MM-ddTHH:mm:ssZ

答案

读者注意:一些评论者指出了此答案中的一些问题(特别是与第一个建议有关)。有关更多信息,请参见评论部分。

DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz");

这给您一个类似于2008-09-22T13:57:31.2311892-04:00 的日期

另一种方法是:

DateTime.UtcNow.ToString("o");

这给你2008-09-22T14:01:54.9571247Z

要获取指定的格式,可以使用:

DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")

日期时间格式选项

DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture)应该为您提供所需的内容,因为 “s” 格式说明符被描述为可排序的日期 / 时间模式;符合 ISO 8601。

DateTime.UtcNow.ToString("s")

返回类似 2008-04-10T06:30:00 的内容

UtcNow显然返回了UTC时间,因此在以下方面没有危害:

string.Concat(DateTime.UtcNow.ToString("s"), "Z")