为何DateTime.Parse可解析"08/08/2000"却无法解析"08/24/2000"?
问题原因与解决办法
核心原因
你遇到的问题是**DateTime.Parse默认依赖当前线程的区域文化设置**,如果你的系统文化采用日/月/年格式(比如中文、英式英语),08/08/2000会被解析为“2000年8月8日”,但08/24/2000里的24超过了月份的最大有效值12,因此触发解析错误。
解决办法
有两种可靠的处理方式:
- 明确指定解析时使用的文化(如果要按
月/日/年解析,可选用美式英语文化):DateTime.Parse("08/24/2000 00:00:00", System.Globalization.CultureInfo.GetCultureInfo("en-US")); - 使用
DateTime.ParseExact指定精确日期格式,彻底规避文化差异的影响:DateTime.ParseExact("08/24/2000 00:00:00", "MM/dd/yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

