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

DateTime.TryParseExact运行却返回false,不同Windows机器结果不一致咨询

问题原因及解决方法

你的代码存在一处关键逻辑错误,这也是跨机器结果不一致的根源:

string dateAndTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm");
// 错误:把格式化后的时间字符串当成格式规则传入ToString方法
string bst = DateTime.Now.ToString(dateAndTime);

DateTime.ToString(string format)的参数要求是格式说明符(比如"dd/MM/yyyy HH:mm"),但你传入的dateAndTime是已经生成的时间字符串(类似"15/10/2024 14:30")。.NET会尝试把这个时间字符串当作格式规则来解析当前时间,最终生成的bst内容完全不符合你预期的格式。

不同机器返回结果不同的核心原因:

  • 两台Windows机器的区域文化设置存在差异,解析这个错误的“格式字符串”时,生成的bst内容不一样。有的机器碰巧生成了符合"dd/MM/yyyy HH:mm"格式的字符串,所以TryParseExact返回true;你的机器生成的字符串不匹配该格式,因此返回false。

修正后的代码

如果你的需求是验证格式化后的时间能否被正确解析,直接使用dateAndTime作为待解析字符串即可,无需多余的ToString调用:

string dateAndTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
DateTime dateTime;
var check = DateTime.TryParseExact(dateAndTime, "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime);

额外提示:调用ToString时指定CultureInfo.InvariantCulture,可以避免不同区域的日期分隔符差异(比如部分区域用"-"替代"/")导致格式化结果偏离预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:52:52