我想将UTC时间转换为以下格式(IS0 8601)。 例如
2000-01-01T17:00:00-05:00
目前我正在使用UtcNow.Convert.ToString("s")
,它以格式
2015-12-05T08:49:14
但这会跳过"-"
符号后面的时间部分。
有人可以提供帮助吗?
答案 0 :(得分:3)
我认为您的格式与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));
或者您可以使用The "s"
standard format specifier并使用-
字符串文字格式化偏移部分;
Console.WriteLine(DateTime.UtcNow.ToString("s") + utcOffset.ToString("'-'hh\\:mm"));