You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:45:30