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

使用ParseExact解析日期提示无法识别有效DateTime,格式是否正确?

问题原因与解决方案

你的格式字符串"d MMMM yyyy"本身是正确的,但报错的核心问题在于文化设置和输入日期的语言不匹配:

  • 你指定了意大利语文化(it-IT),但输入的日期里月份是英文的January,而意大利语中一月的正确拼写是Gennaio。ParseExact是严格匹配规则的,文化对应的月份/星期名称必须和输入完全一致,所以才会抛出“字符串无法识别为有效DateTime”的错误。

针对这个问题,有两种直接的解决思路:

1. 匹配输入日期的语言选择对应文化

如果你的输入日期始终是英文格式(比如1 January 2018),把文化改成英文区域即可,比如英式英语en-GB:

var date = DateTime.ParseExact(context.MatchDate, "d MMMM yyyy", new CultureInfo("en-GB")).ToString("dd MMMM yyyy");

2. 保持意大利语文化,修改输入日期的月份为意大利语拼写

如果业务要求必须使用it-IT文化,那么输入日期的月份需要换成意大利语的对应名称,比如把January改为Gennaio:

// 输入需调整为「1 Gennaio 2018」
var date = DateTime.ParseExact(context.MatchDate, "d MMMM yyyy", new CultureInfo("it-IT")).ToString("dd MMMM yyyy");

额外提示:如果输入日期的语言不确定,建议使用DateTime.TryParseExact并传入多个候选文化,这样能兼容更多场景,避免直接抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:41:45