C#中解析指定字符串为目标DateTime格式报错,如何解决?
解决DateTime解析格式异常的问题
你的问题核心是ParseExact的格式字符串用错了——这个参数需要匹配输入字符串的格式,而不是你想要输出的格式。
正确处理步骤
- 按输入字符串的格式解析成DateTime对象
- 转换为UTC时间(匹配目标输出的+00:00时区)
- 格式化为你需要的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
相关产品推荐
相关产品推荐

