给定一个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)