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

C#使用DateTime.ParseExact转换带时区时间字符串1999-12-31T23:00:00.000+0000问题

时间格式转换解决方案

错误原因排查

你当前的代码存在三处格式匹配错误:

  • 小时占位符使用了12小时制的hh,目标字符串中的23属于24小时制,需替换为HH
  • 秒和毫秒的分隔符写为冒号,且毫秒占位符错误,实际格式应为.fff
  • 时区偏移占位符ZZZZZ无效,四位数字UTC偏移量对应的匹配符为zzz,如果输入的时区偏移不带冒号,可直接用标准ISO格式解析避免自定义格式出错。

可用解决方案

方案1:使用正确的自定义格式字符串

DateTime result = DateTime.ParseExact("1999-12-31T23:00:00.000+0000", "yyyy-MM-ddTHH:mm:ss.fffzzz", CultureInfo.InvariantCulture);

如果解析时提示时区格式不匹配,推荐使用更稳妥的DateTimeOffset处理带时区的时间:

DateTimeOffset offsetResult = DateTimeOffset.ParseExact("1999-12-31T23:00:00.000+0000", "yyyy-MM-ddTHH:mm:ss.fffzzz", CultureInfo.InvariantCulture);
// 按需取对应时区的时间
DateTime utcTime = offsetResult.UtcDateTime;
DateTime localTime = offsetResult.LocalDateTime;

方案2:直接解析标准ISO 8601格式

你提供的目标字符串属于标准ISO 8601时间格式,无需指定自定义格式即可直接解析:

// 直接解析标准格式字符串
DateTimeOffset standardResult = DateTimeOffset.Parse("1999-12-31T23:00:00.000+0000", CultureInfo.InvariantCulture);

内容的提问来源于stack exchange,提问作者Arlunily

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:24:02