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

DateTime.ParseExact方法出现意外错误,求问题排查与解决

问题根源分析

咱们来拆解下你遇到的问题:

你的代码里,第一步用System.DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt")生成日期字符串,但这里的tt格式符会根据当前系统的区域设置生成对应的上午/下午标识——比如如果你的系统是中文环境,生成的会是「上午」或「下午」,而不是英文的「AM/PM」。

但后面你用DateTime.ParseExact解析时,指定的是CultureInfo.InvariantCulture,这个文化的tt对应的是英文的「AM/PM」。当解析器看到非英文的上午/下午标识时,自然就会抛出格式不匹配的错误。

而你的系统日期格式设置为3/29/2018(即MM/dd/yyyy),其实和这段代码的直接报错无关,但它侧面说明你的系统区域设置不是英文系的,这才是导致tt格式符生成非英文标识的核心原因。

快速修复方案

你只需要在生成日期字符串的时候,也指定CultureInfo.InvariantCulture,让生成的tt是英文的「AM/PM」,这样解析时就能匹配上了:

string DateString = System.DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
string Format = "dd/MM/yyyy hh:mm:ss tt";
DateTime DT = DateTime.ParseExact(DateString, Format, CultureInfo.InvariantCulture);
string DTE = DT.ToString("dd/MM/yyyy");

或者,如果你不需要中间的字符串转换步骤,完全可以直接获取日期部分,效率更高:

string DTE = System.DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:58:28