DateTime.TryParse在Internet Explorer中不起作用

时间:2015-04-28 16:37:22

标签: c# internet-explorer datetime datetime-parsing

public JsonResult TimeValidation(string pickUp, string delivery)   
{

    var errorMessage = string.Empty;
    var dateTime = DateTime.MinValue;

    if (!DateTime.TryParse(pickUp, out dateTime))
        errorMessage = "Invalid date";

     if (!DateTime.TryParse(delivery, out dateTime))
        errorMessage = "Invalid date";
}
‎4‎/‎29‎/‎2015‎ ‎3‎:‎30‎:‎00‎ ‎PM pickup from ie
4‎/‎30‎/‎2015‎ ‎12‎:‎00‎:‎00‎ ‎AM delivery from ie
4/29/2015, 3:30:00 PM pickup from  firefox
4/30/2015, 12:00:00 AM delivery from firefox  

它在chrome和firefox中运作良好,但它没有在Internet Explorer 11中转换为datetime请注意,在日期和时间之间

2 个答案:

答案 0 :(得分:1)

假设这是C#(看起来像是)并且它在服务器上运行(实际上不在浏览器中):您应该检查System.Globalization.CultureInfo.CurrentCulture的值是什么。查看来自IE与您的其他浏览器之间的请求是否不同。 DateTime.TryParse(string, out DateTime)使用此值来帮助解析字符串。

例如,您提供的日期:"28/04/2015 07:59:00"会导致TryParse如果当前文化为false则返回en-US,但如果当前文化为{{1}然后它将返回es-MX

我不确定为什么我的脑海中的浏览器会有所不同,但它至少是一个开始寻找的地方。

答案 1 :(得分:0)

我遇到了类似的问题,这个问题是javaScript方法 IE11中的toLocaleDateString()返回带有一些RTL字符的字符串!导致数据无效,并且这些字符不可见。

使用正则表达式的简单修补程序

toLocaleDateString().replace(/[^A-Za-z 0-9 \.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g, '')

我在后面的C#上尝试了相同的正则表达式,但是没有用,但是,我不想花更多的时间在上面,所以我只应用了前端解决方案。

More details, source