C# “转换字符串”;2013年7月16日上午7:00:00”;迄今为止

C# “转换字符串”;2013年7月16日上午7:00:00”;迄今为止,c#,.net,C#,.net,我很震惊为什么它会给我一个错误 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", "

我很震惊为什么它会给我一个错误

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);
我用过

  • 无前导零的M月0-12号
  • d第0-31天,无前导零
  • yyyy年(含所有数字)
  • 12小时格式0-12(无前导零)中的M小时
  • 毫米分钟0-59,带前导零
  • ss秒0-59,带前导零
作为文化,我确实指定了不变的文化,在所有系统上基本上都是英语。无论系统或线程的当前区域性如何,它都是相同的

您的问题确实来自这样一个事实,即您尝试使用系统中的相同线程区域设置处理来自不同区域设置的日期,该系统似乎是英语的。要正确处理日期,您需要知道输入日期的语言环境,以便能够正确解析日期。某些地区确实会切换,例如,月和日,正如您的示例中所示。有些人使用不同的分隔符,甚至其他文化也有不同的用途,字符为千分隔符和小数点

德语使用,作为小数点和。作为千分之一。约会看起来像

“24.12.2013 14:25:59”


没有上午/下午,没有/但是有很多点

您可以尝试使用
DateTime.TryParse()


谢谢你的帮助,但还是会出现同样的错误。也谢谢你的链接。这似乎是非常基本的,我两年的经验后才知道。可能是重复的
 var dt = DateTime.ParseExact("7/16/2013 7:00:00 AM", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
DateTime dt;
if(DateTime.TryParse("7/16/2013 7:00:00 AM", out dt))
    Console.Write(dt);