我们正在托pipe一个网站,当浏览到本地加载罚款,但如果你从外部浏览它,你会得到
Conversion from string "1/15/2010 8:46:01 AM" to type 'Date' is not valid.
我在服务器上更改什么来解决这个问题。 当浏览服务器上的网站时,它可以正常工作,尽pipe我是以不同的用户身份login服务器的。
任何想法现在实际上开始引起头痛。
这可能与您在转换中使用的语言环境有关。 也许在外部使用英国格式,但内部使用美国格式。 请确保指定将string转换为date时所需的确切格式。
我希望看到给您带来麻烦的代码,但“2010年1月15日上午8时46分01秒”是en-US编码的有效date。 确保你使用的是美国文化; 不要假设它是基于你用于开发/testing的机器。 此外,如果DateTimestring基于input,请考虑用户可以通过“控制面板” 覆盖当前区域性的情况。
以下是MSDN的一个例子 :
string dateString; CultureInfo culture; DateTimeStyles styles; DateTime dateResult; // Parse a date and time with no styles. dateString = "03/01/2009 10:00 AM"; culture = CultureInfo.CreateSpecificCulture("en-US"); styles = DateTimeStyles.None; if (DateTime.TryParse(dateString, culture, styles, out dateResult)) Console.WriteLine("{0} converted to {1} {2}.", dateString, dateResult, dateResult.Kind); else Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
看起来操作系统的变化是需要进入控制面板>区域和语言选项>标准和格式>将语言下拉菜单设置为英语(英国),并将位置设置为英国。
理想情况下,代码应该使用文化不变date来解决这些问题以及date格式化方法 。
既然你在其他答案中提到了某个机器的工作原理,而另外一个答案却没有,那么这就表明这个问题可能在客户端。
浏览网页时,浏览器会向服务器提供一组已接受/首选的语言环境。
你应该看看机器上的这些设置,并将它们与机器上不能正常工作的设置进行比较。 可能有些机器已经从请求英国的区域设置切换到请求美国的区域设置(或其他方式)。
源代码或没有源代码,如果它是一个ASP.NET应用程序,你可以改变web.config文化到正确的 – 看到这个问题和评论我的答案 。
<system.web> <globalization culture="en-US" uiCulture="en-US" /> <system.web />
由于操作系统的设置是每个用户,所以在使用操作系统控制面板尝试更改操作系统时会遇到一些问题 – 因此,在上述应用程序中尝试更改它通常会更容易,更稳定。
服务器或数据库的语言环境设置为美国(如月/日/年是美国格式date),但代码需要英国格式date(日/月/年)。
检查这些,并确保它们匹配,应该没问题。
看看如何更改默认服务器区域设置
你可以试试这个setlocale.exe文件来设置它
00000409英文(美国)。
00000809英语(英国)。
完整列表在这里