字符串到DateTime转换不起作用

时间:2017-09-20 11:02:57

标签: c# datetime

我正在将一个字符串转换为DateTime变量,如此

 DateTime selecteddatetest = Convert.ToDateTime("09/21/2017");

这在我的生产服务器中运行良好,但是当我在本地开发机器中运行此代码时,会抛出错误

  

System.FormatException:'字符串未被识别为有效的DateTime。'

任何人都可以指出我在这里缺少的东西吗?

3 个答案:

答案 0 :(得分:6)

如果时间格式一致,您可以使用ParseExact

DateTime.ParseExact("09/21/2017","MM/dd/yyyy", 
                     System.Globalization.CultureInfo.InvariantCulture)

答案 1 :(得分:3)

这可能是两台机器之间的本地化问题,请尝试以格式" 2017-09-21"它应该无处不在。

答案 2 :(得分:2)

您可能在两台机器之间使用不同的文化。

例如,服务器正在使用美国文化,其格式为MM/dd/yyyy,因此您的解析工作正常 您本地计算机可能正在使用英国等文化,其格式为dd/MM/yyyy,因为没有第21个月它会失败。

如果您知道文化总是一样的话,您可以明确指定文化:

Convert.ToDateTime("09/21/2017", new System.Globalization.CultureInfo("en-US"));

它也可以与不变的文化一起使用:

Convert.ToDateTime("09/21/2017", System.Globalization.CultureInfo.InvariantCulture);

您也可以使用ParseExact指定所需的格式:

DateTime.ParseExact("09/21/2017", "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture);