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

使用DateTime.TryParseExact解析德语日期返回false的问题

问题原因及解决办法

核心问题:德语星期缩写不匹配

在de-DE文化下,星期六的标准缩写是"Sa",而你输入字符串里的"Sam"不符合该文化的默认星期缩写规则,这是解析失败的根本原因。另外,字符串中的月份缩写"Mär"是符合de-DE文化的三月缩写,这部分没有问题。

解决方式

有两种可行的处理方案:

方案1:修正输入字符串的星期缩写

将输入里的"Sam"替换为符合标准的"Sa"后再解析:

string input = "Sam Mär 24 03:58:38 2024".Replace("Sam", "Sa");
DateTime result;
bool success = DateTime.TryParseExact(input, 
                                       "ddd MMM d HH:mm:ss yyyy", 
                                       new CultureInfo("de-DE"), 
                                       DateTimeStyles.None, out result);

方案2:自定义格式提供器兼容"Sam"缩写

如果无法修改输入字符串,可以克隆de-DE文化并自定义星期缩写映射:

var customDeCulture = (CultureInfo)new CultureInfo("de-DE").Clone();
customDeCulture.DateTimeFormat.AbbreviatedDayNames = new[] { "So", "Mo", "Di", "Mi", "Do", "Fr", "Sam" };

DateTime result;
bool success = DateTime.TryParseExact("Sam Mär 24 03:58:38 2024", 
                                       "ddd MMM d HH:mm:ss yyyy", 
                                       customDeCulture, 
                                       DateTimeStyles.None, out result);

额外提示

如果使用.NET Framework,需注意系统区域设置可能影响默认文化的格式,但上述两种方案不依赖系统环境,可靠性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:28:09