我正在将一个字符串转换为DateTime变量,如此
DateTime selecteddatetest = Convert.ToDateTime("09/21/2017");
这在我的生产服务器中运行良好,但是当我在本地开发机器中运行此代码时,会抛出错误
System.FormatException:'字符串未被识别为有效的DateTime。'
任何人都可以指出我在这里缺少的东西吗?
答案 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);