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

DateTimeOffset.TryParseExact解析含非英文字符时间失败排查

问题根源与解决方案

首先得明确:你这里的核心误区是把希伯来语书写的公历月份和希伯来历(犹太历)的月份搞混了。

你输入里的מאי是希伯来语拼写的公历五月(对应英语May),属于格里高利历的月份名称,但你手动设置了HebrewCalendar()——这个日历是希伯来历的系统,它的月份是Nisan、Iyar这类和公历完全不相关的名称,所以不管你设不设置这个日历,解析都会失败,因为根本不匹配。

另外你的格式字符串也有两处问题:

  • 输入里的月份是名称缩写,不是数字,应该用MMM而不是MM
  • 输入末尾的时区偏移+03:00也没在格式字符串里体现,需要加上zzz

修正后的代码

string str = @"30-מאי-18 14:18:15 +03:00";
DateTimeOffset res;
// 直接用he-IL文化的默认配置,它默认用格里高利历,已经包含希伯来语的公历月份名称
CultureInfo culture = new CultureInfo("he-IL");

if (DateTimeOffset.TryParseExact(str, "dd-MMM-yy HH:mm:ss zzz", culture, DateTimeStyles.None, out res))
{
    // 解析成功,这里写你的处理逻辑
    Console.WriteLine(res);
}

补充说明

  • he-IL文化的DateTimeFormat默认就适配希伯来语的公历月份,包括缩写形式מאי,所以完全不需要切换到HebrewCalendar
  • 如果你非要用HebrewCalendar,那你的输入日期必须是希伯来历的日期(比如对应希伯来历的月份名称),但显然你的输入是公历日期,所以完全不适用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:13:07