c#和日期文化问题

时间:2009-03-05 09:56:35

标签: c# .net asp.net datetime cultureinfo

我编写了一个asp.net应用程序,我的一个回发例程只是将用户提交的表单数据保存到sql 2005 db。所有在我的开发机器上运行都很棒但是当我部署到实际站点时,我的解析日期检查器的日期无效。

基本上,它希望在现场机器上使用美国日期格式,但这不是我想要的。用户需要能够以dd / MM / yyyy格式输入。因此像21/10/2009这样的有效日期会在实时服务器上返回错误,但在我的开发机器上则不会。下面是抛出异常的代码。

DateTime dt;
dt = DateTime.Parse(sdate);  
//sdate in GB dd/MM/yyyy format

是否可以强制解析例程以dd / MM / yyyy格式预期日期?

4 个答案:

答案 0 :(得分:9)

这样做:

    System.Globalization.CultureInfo cultureinfo = 
        new System.Globalization.CultureInfo("en-gb");
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);

答案 1 :(得分:6)

您可以使用DateTime.ParseExact指定预期的格式。

答案 2 :(得分:4)

另一种选择是在web.config文件中指定您希望使用的文化:

<system.web>
    ...
    <globalization 
        culture="da-DK" 
        uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
    />
</system.web>

答案 3 :(得分:2)

是的,ParseExact会按照Matt的说法做到这一点。

代码如下:

dt  = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);