C#如何格式化DateTime.UtcNow输出GMT+xx:xx格式时间字符串
问题原因
你遇到的格式差异是因为K格式符的输出规则和DateTime实例的Kind属性绑定:
DateTime.Now的Kind是Local,此时K会输出本地时区相对UTC的偏移量,格式为±HH:mm,所以你得到了GMT+00:00的结果DateTime.UtcNow的Kind是Utc,此时K会直接输出代表UTC时区的Z,就出现了你看到的GMTZ异常结果
解决方案
推荐你用zzz格式符替代K,搭配DateTimeOffset使用可以稳定输出±HH:mm格式的时区偏移,调整后的代码如下:
var datetimeutc = DateTimeOffset.UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss'GMT'zzz");
运行后输出的格式就和你第一个示例完全一致,比如:2021-05-06T19:36:09GMT+00:00
如果你确认只用UTC时间,也可以直接硬编码偏移量,写法更简单:
var datetimeutc = DateTime.UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss'GMT+00:00'");
内容的提问来源于stack exchange,提问作者Remaori
相关产品推荐
相关产品推荐

