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

DateTime转义\在.NET Framework生效,.NET 6.0失败求解决方法

.NET 6中DateTime.ParseExact解析KST时间字符串失败的解决办法

问题现象

以下代码在mono-6.12.0或.NET Framework 4.7.2中可正常运行,但在.NET 6.0中执行失败,抛出System.FormatException:

未处理的异常。System.FormatException: 字符串'Sat Sep 10 05:57:59 KST 2022'未被识别为有效的DateTime。
在System.DateTime.ParseExact(String s, String format, IFormatProvider provider)处。

原代码:

var data = "Sat Sep 10 05:57:59 KST 2022";
var time = DateTime.ParseExact(data, "ddd MMM d hh:mm:ss \\K\\S\\T yyyy", null);

Console.WriteLine(time);

问题原因

  1. 区域性不匹配:原代码传入null作为IFormatProvider,会使用当前系统的区域性设置。.NET 6对解析规则更严格,如果当前系统区域不是英文,无法识别字符串中的英文星期缩写(Sat)和月份缩写(Sep)。
  2. 时区处理缺失:直接转义KST仅能匹配字符串格式,但没有将其作为时区信息解析,丢失了时间的时区上下文。

解决方案

方案1:指定英文区域性并补充时区处理

通过指定CultureInfo.InvariantCulture确保解析英文缩写,同时可以结合TimeZoneInfo处理KST时区:

using System.Globalization;
using System;

var data = "Sat Sep 10 05:57:59 KST 2022";
// 使用InvariantCulture匹配英文星期和月份缩写
var parsedTime = DateTime.ParseExact(data, "ddd MMM d hh:mm:ss \\K\\S\\T yyyy", CultureInfo.InvariantCulture);

// 解析为带KST时区的DateTimeOffset(可选,用于保留时区信息)
var kstTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Korea Standard Time");
var dateTimeOffset = new DateTimeOffset(parsedTime, kstTimeZone.GetUtcOffset(parsedTime));

Console.WriteLine("本地时间:" + parsedTime);
Console.WriteLine("UTC时间:" + dateTimeOffset.UtcDateTime);

方案2:替换时区标识为偏移量,使用DateTimeOffset解析(更推荐)

将KST替换为对应的UTC偏移量+09:00,然后用DateTimeOffset.ParseExact解析,直接保留时区信息:

using System.Globalization;
using System;

var data = "Sat Sep 10 05:57:59 KST 2022";
// 替换KST为UTC+9的偏移量格式
var adjustedData = data.Replace("KST", "+09:00");
// 使用包含时区偏移的格式字符串解析
var dateTimeOffset = DateTimeOffset.ParseExact(adjustedData, "ddd MMM d hh:mm:ss zzz yyyy", CultureInfo.InvariantCulture);

Console.WriteLine("带时区的时间:" + dateTimeOffset);
Console.WriteLine("转换为本地时间:" + dateTimeOffset.LocalDateTime);

说明

旧版.NET Framework和Mono对区域性解析的兼容性更宽松,即使当前区域非英文也可能匹配英文缩写;而.NET 6严格遵循区域性规则,必须显式指定支持英文缩写的区域性(如InvariantCulture)才能正确解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:45:33