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

时间:2020-03-06 14:32:27  来源:igfitidea点击:

鉴于:

DateTime.UtcNow

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

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

yyyy-MM-ddTHH:mm:ssZ

解决方案

DateTime.UtcNow.ToString("s")

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

UtcNow很明显会返回UTC时间,因此不会对以下内容造成伤害:

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

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转换为yyyy-MM-ddTHH:mm:ssZ的字符串表示形式,可以将DateTime结构的ToString()方法与自定义格式字符串一起使用。当将自定义格式的字符串与DateTime一起使用时,请务必记住需要使用单引号对分隔符进行转义。

以下将返回我们想要的字符串表示形式:

DateTime.UtcNow.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", DateTimeFormatInfo.InvariantInfo)