将UTC时间转换为类似ISO 8601的格式

本文关键字:ISO 8601 格式 UTC 时间 转换 | 更新日期: 2023-09-27 18:25:41

我想将UTC时间转换为以下格式(IS0 8601)。例如

2000-01-01T17:00:00-05:00

目前我使用的是UtcNow.Convert.ToString("s"),它提供了格式的日期时间

2015-12-05T08:49:14

但是这跳过了CCD_ 2符号之后的时间部分。

有人能帮忙吗?

将UTC时间转换为类似ISO 8601的格式

我认为您的格式与ISO 8601格式有点不同。

首先,当您使用任何z格式说明符时,您总是得到+-符号,这取决于您的UTC偏移值是负还是正。

最好获取您当前的本地时区utc偏移量,使用hh'':mm格式进行格式化,并将您格式化的UtcNow值组合为:;

var utcOffset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow);
var formattedOffset = utcOffset.ToString("hh'':mm");
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss'-'" + formattedOffset));

或者,您可以使用"s"标准格式说明符,并使用-字符串文字将偏移部分格式化为;

Console.WriteLine(DateTime.UtcNow.ToString("s") + utcOffset.ToString("'-'hh'':mm"));