4

我编写了一个 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

4 回答 4

9

这样做:

    System.Globalization.CultureInfo cultureinfo = 
        new System.Globalization.CultureInfo("en-gb");
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);
于 2009-03-05T10:23:29.687 回答
6

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

于 2009-03-05T09:59:22.643 回答
4

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

<system.web>
    ...
    <globalization 
        culture="da-DK" 
        uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
    />
</system.web>
于 2009-03-05T10:16:52.807 回答
2

是的,ParseExact 会按照 Matt 所说的那样做。

代码将类似于:

dt  = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
于 2009-03-05T15:29:15.050 回答