如何在C#中解析带+07:00时区的日期并转换为UTC+0?
解决C#中带时区偏移的日期转UTC+0的问题
你的问题出在原代码的格式字符串没有包含时区偏移部分,导致解析时无法识别+07:00这个时区信息,下面提供几种可行的解决方法:
方法一:修改格式字符串包含时区偏移
直接在格式字符串中添加zzz来匹配+07:00这种带冒号的时区偏移,解析后调用ToUniversalTime()转成UTC+0:
string sessionDate = "2022-11-17T15:23:45+07:00"; DateTime startDateTime = DateTime.ParseExact(sessionDate, "yyyy-MM-ddTHH:mm:sszzz", System.Globalization.CultureInfo.InvariantCulture).ToUniversalTime();
方法二:使用DateTimeOffset更稳妥
DateTimeOffset类型会明确存储时区偏移信息,避免DateTime的Kind属性歧义,解析后直接通过UtcDateTime获取UTC时间:
string sessionDate = "2022-11-17T15:23:45+07:00"; DateTimeOffset dateTimeOffset = DateTimeOffset.ParseExact(sessionDate, "yyyy-MM-ddTHH:mm:sszzz", System.Globalization.CultureInfo.InvariantCulture); DateTime utcDateTime = dateTimeOffset.UtcDateTime;
方法三:利用ISO 8601标准格式符
你的日期字符串是标准ISO 8601格式,可以直接用"o"格式符简化解析:
// DateTime版本 DateTime startDateTime = DateTime.ParseExact(sessionDate, "o", System.Globalization.CultureInfo.InvariantCulture).ToUniversalTime(); // DateTimeOffset版本 DateTimeOffset dateTimeOffset = DateTimeOffset.ParseExact(sessionDate, "o", System.Globalization.CultureInfo.InvariantCulture); DateTime utcDateTime = dateTimeOffset.UtcDateTime;
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

