我很震惊为什么它给我一个错误
Convert.ToDateTime("7/16/2013 7:00:00 AM");
但如果我使用的话效果很好
Convert.ToDateTime(("16/7/2013 7:00:00 AM");
如何将“7/16/2013 7:00:00 AM”转换为 DateTime
最佳答案
您可以使用特定的语言环境,也可以定义 format自己像这样:
var dt = DateTime.ParseExact("7/16/2013 7:00:00 AM", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
我用过
- M 月份 0-12 数字,不带前导零
- d 天数 0-31,不带前导零
- yyyy 所有数字的年份
- 12 小时格式的 M 小时,0-12 不带前导零
- mm 0-59 分,带前导零
- ss 0-59 秒,带前导零
作为文化,我确实指定了不变文化,它在所有系统上基本上都是英语。无论系统或线程的当前文化如何,都是一样的。
您的问题确实源于您确实尝试使用系统中相同的线程区域设置处理来自不同区域设置的日期,这似乎是英语。要正确处理日期,您需要知道它是在哪个区域设置中输入的,以便能够正确解析它。某些语言环境确实会切换,例如月份和日期,就像您的示例中一样。有些使用不同的分隔符,甚至其他文化对 . , 字符作为千位分隔符和小数点。
德语使用 , 作为小数点,而 .作为千位分隔符。日期看起来像
“24.12.2013 14:25:59”
没有 AM/PM 没有/但是有很多点。
关于c# - 将字符串 "7/16/2013 7:00:00 AM"转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18029580/