C#中DateTime.ParseExact解析特定BST日期失败问题咨询
问题原因分析及解决方法
可能的原因
- 文化信息不匹配:你调用
ParseExact时第三个参数传了null,会使用当前线程的CultureInfo。如果当前文化不是英语系(比如中文、德语),或者英语系文化的日期格式被修改,就可能无法识别"Thu""Sep"这类英文缩写。之前"Fri Oct"能解析可能是测试环境的文化恰好兼容,或者存在临时配置差异。 - 字符串含不可见特殊字符:实际传入的"Thu Sep 28..."字符串里可能有全角空格、零宽空格这类不可见字符,导致格式严格匹配失败。
- 自定义日期格式覆盖:系统或你的应用程序中修改了
DateTimeFormatInfo的星期/月份缩写规则,使得"Sep"或"Thu"不被识别为合法缩写。
解决方法
最可靠的方式是显式指定不依赖系统区域的固定文化(比如InvariantCulture),确保英文缩写能被正确解析:
try { d = DateTime.ParseExact(date, "ddd MMM dd HH':'mm':'ss 'BST' yyyy", System.Globalization.CultureInfo.InvariantCulture); } catch (FormatException) { }
如果是字符串含特殊字符的问题,可以先清理字符串:
// 替换所有非标准空格为普通空格 date = System.Text.RegularExpressions.Regex.Replace(date, @"\s+", " ").Trim();
内容的提问来源于stack exchange,提问作者Slash
相关产品推荐
相关产品推荐

