我很震惊为什么它给我一个错误
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
您可以使用特定的语言环境,也可以自己定义格式,如下所示:
var dt = DateTime.ParseExact("7/16/2013 7:00:00 AM", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
我用过
作为文化,我确实指定了在所有系统上基本上都是英语的不变文化。无论系统或线程的当前文化如何,它都是相同的。
您的问题确实源于您确实尝试使用系统中相同的线程语言环境处理来自不同语言环境的日期,这似乎是英语。要正确处理日期,您需要知道它是在哪个语言环境中输入的,以便能够正确解析它。某些语言环境确实会像您的示例中那样切换例如月份和日期。有些人使用不同的分隔符,甚至其他文化对 . , 字符作为千位分隔符和小数点。
德语使用 , 作为小数点和 . 作为千位分隔符。约会看起来像
“2013 年 12 月 24 日 14:25:59”
没有 AM/PM 没有 / 但有很多点。
您必须了解文化,请参阅此链接:Convert.ToDateTime 方法
CultureInfo culture = new CultureInfo("en-US");
Convert.ToDateTime("7/16/2013 7:00:00 AM", culture );
您可以简单地尝试使用DateTime.TryParse()
DateTime dt;
if(DateTime.TryParse("7/16/2013 7:00:00 AM", out dt))
Console.Write(dt);