从字符串“31/03/2012”到“日期”类型的转换无效

时间:2011-10-30 13:54:41

标签: asp.net vb.net iis datetime globalization

我的网络应用程序在asp vb.net编辑器中运行完美。但是,当我通过IIS7运行我的Web应用程序时,我得到此错误。我在配置IIS7时缺少什么?是否有人可以提出建议?

先谢谢

3 个答案:

答案 0 :(得分:6)

因为您的IIS7配置为英语,并且该日期可能是意大利语或类似的东西。您必须告诉Date.Parse要使用哪种文化。

这样的东西
dateValue = Date.Parse(yourDate, CultureInfo.CreateSpecificCulture("it-IT"))

或者您可以更改IIS7中的文化

这里有instructions

例如,如果您使用UI

  

使用UI打开IIS管理器并导航到您想要的级别   管理。 (omissis)

     

在“功能视图”中,双击“.NET全球化”。

     

在.NET全球化页面的属性表中,单击以选中   要编辑的全局设置,然后从中选择一个值   下拉列表。

     

在“操作”窗格中,单击“应用”。

或者您可以在web.config

中设置应用的文化
<system.web>
    <globalization culture="it-IT" uiCulture="it-IT"/>
</system.web>

答案 1 :(得分:4)

如果您确定日期始终与该格式完全相同,那么您可以改为使用ParseExact:

var date = DateTime.ParseExact(
               "31/03/2012",
               "dd/MM/yyyy",
               System.Globalization.CultureInfo.InvariantCulture);

答案 2 :(得分:1)

您也可以使用CDate函数来解析日期。

Dim dDate As Date = CDate("31/03/2012")

使用此函数优于DateTime解析函数的优点是,您可以将任何可接受的日期字符串格式提供给它,它将转换它。如果无法解析日期,则会抛出错误。