我编写了一个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格式预期日期?
答案 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);