关于日期格式的简单问题

关于日期格式的简单问题

我们托管了一个网站,在本地浏览时可以正常加载,但如果从外部浏览,则会出现

Conversion from string "1/15/2010 8:46:01 AM" to type 'Date' is not valid.

我应该在服务器上做哪些更改来修复这个问题?在服务器上浏览网站时,网站可以正常工作,尽管我以不同于 IIS 中的用户身份登录到服务器。

任何想法这实际上现在都开始引起头疼了。

答案1

这可能与您在转换时使用的区域设置有关。也许外部使用的是英国格式,但内部使用的是美国格式。确保在将字符串转换为日期时指定您期望的确切格式。

答案2

我想看看给你带来麻烦的代码,但“1/15/2010 8:46:01 AM”在 en-US 编码中是有效的日期。请确保您使用的是 en-US 文化;不要根据您用于开发/测试的机器来假设它。此外,如果 DateTime 字符串基于输入,请考虑用户可以覆盖当前文化通过控制面板。

这是一个来自 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);

答案3

您需要的操作系统更改似乎是进入控制面板 > 区域和语言选项 > 标准和格式 > 将语言下拉菜单设置为英语(英国)并将位置设置为英国。

理想情况下,代码应该使用文化不变日期解决这些问题日期格式化方法

答案4

无论是否有源,如果是 ASP.NET 应用程序,你可以将 web.config 中的文化更改为正确的文化 - 请参阅这个问题和对我的回答的评论

<system.web>
 <globalization culture="en-US" uiCulture="en-US" />
<system.web />

由于操作系统设置是针对每个用户的,您在尝试使用操作系统控制面板更改它时会遇到一些问题 - 因此尝试在上述应用程序中更改它通常更容易、更强大。

相关内容