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

C#如何将RoundTrip格式日期字符串转换为DateTime对象?

解析带毫秒和时区偏移的ISO格式字符串为DateTime对象

嘿,这个格式其实是标准的ISO 8601扩展格式,.NET里的DateTime.Parse()本来就支持它,可能是你没注意到一些细节导致没成功?我给你几个实用的方案:

  • 直接用DateTime.Parse()(推荐简单场景)
    只要指定正确的文化信息和解析样式,就能轻松搞定。因为这个格式是国际化标准,用CultureInfo.InvariantCulture可以避免系统区域设置的干扰,加上DateTimeStyles.AdjustToUniversal还能自动转成UTC时间:

    string dateString = "2018-03-27T14:33:54.4092769+03:00";
    DateTime parsedDateTime = DateTime.Parse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
    

    如果你想保留原始的时间偏移对应的本地时间,把DateTimeStyles.AdjustToUniversal换成DateTimeStyles.None就行。

  • 用DateTime.ParseExact()精确控制格式
    要是你想明确指定格式规则,避免任何歧义,就用这个方法。你的字符串格式对应的格式字符串是"yyyy-MM-ddTHH:mm:ss.fffffffzzz"——其中fffffff对应7位毫秒,zzz对应带冒号的时区偏移(比如+03:00):

    string dateString = "2018-03-27T14:33:54.4092769+03:00";
    string format = "yyyy-MM-ddTHH:mm:ss.fffffffzzz";
    DateTime parsedDateTime = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture, DateTimeStyles.None);
    
  • 额外建议:优先考虑DateTimeOffset
    如果你需要保留时区偏移信息(而不是只存一个时间值),更推荐用DateTimeOffset类型,它会直接存储时间和对应的偏移量,后续处理时区转换更方便:

    string dateString = "2018-03-27T14:33:54.4092769+03:00";
    DateTimeOffset dateOffset = DateTimeOffset.Parse(dateString);
    // 转成DateTime可以用dateOffset.UtcDateTime或dateOffset.LocalDateTime
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:32:39