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

C#中解析指定字符串为目标DateTime格式报错,如何解决?

解决DateTime解析格式异常的问题

你的问题核心是ParseExact的格式字符串用错了——这个参数需要匹配输入字符串的格式,而不是你想要输出的格式。

正确处理步骤

  1. 按输入字符串的格式解析成DateTime对象
  2. 转换为UTC时间(匹配目标输出的+00:00时区)
  3. 格式化为你需要的ISO 8601格式

修正后的代码

string startTime = "10/22/2012 9:13:15 PM";

// 按输入格式解析字符串,指定解析为UTC时间
DateTime date = DateTime.ParseExact(
    startTime,
    "MM/dd/yyyy h:mm:ss tt", // 匹配输入的"月/日/年 时:分:秒 AM/PM"格式
    CultureInfo.InvariantCulture,
    DateTimeStyles.AdjustToUniversal);

// 格式化为目标格式
string formattedDate = date.ToString("yyyy-MM-dd'T'HH:mm:ssK");
// 输出结果:"2012-10-22T21:13:15+00:00"

关键说明

  • 输入格式"MM/dd/yyyy h:mm:ss tt":
    • MM对应两位月份(10)、dd对应两位日期(22)、yyyy对应四位年份(2012)
    • h是12小时制的小时数(9)、tt匹配AM/PM标记(PM)
  • DateTimeStyles.AdjustToUniversal:让解析后的时间直接转为UTC时区,保证输出的K显示+00:00
  • 输出格式"yyyy-MM-dd'T'HH:mm:ssK":
    • HH是24小时制小时数(PM9点转为21)、K自动显示UTC时区偏移量

内容的提问来源于stack exchange,提问作者Muntasir Ahmad Nabil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:28:29