IE 9和IE最新版本的javascript中的不同日期格式

时间:2015-12-24 07:51:12

标签: javascript c# internet-explorer datetime

我在使用不同版本的IE时获得以下字符串。

在IE最新版本:" 2014年11月10日星期一00:00:00 GMT + 0530(印度标准时间)"

在IE版本9中:"星期一11月10日00:00:00 UTC + 0530 2014"

我将IE最新版本值传递给后端,然后转换为c#datetime对象,如下所示

   Actions builder = new Actions(driver);
   Actions dragAndDrop = builder.clickAndHold(driver.findElement(By.cssSelector("div.slimScrollBar")));
  // bulder.moveToElement(otherElement)
   builder.release(driver.findElement(By.xpath("id('sidebar')/div/div[1]/ul/li[10]/a"))).build();
   dragAndDrop.perform(); 

但是当我获得旧的浏览器值时,我得到了错误。 那么如何在c#。

中转换datetime对象中的旧浏览器值和最新浏览器值

2 个答案:

答案 0 :(得分:0)

由于您的startdate.Substring(0, 24)会为您的IE9版本返回Mon Nov 10 00:00:00 UTC+,因此您的格式和字符串显然不匹配。

但是我会为你的两个例子解析DateTimeOffset而不是DateTime,因为你有UTC Offset值。

string s = "Mon Nov 10 00:00:00 UTC+0530 2014";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(s, "ddd MMM dd HH:mm:ss 'UTC'zzz yyyy", 
                                 CultureInfo.InvariantCulture,
                                 DateTimeStyles.None, out dto))
{

}

现在您的DateTimeOffset10.11.2014 00:00:00 +05:30

或者您可以使用this overload将格式化为字符串数组,这样您就可以提供两种格式并使用匹配的字符串解析字符串。

答案 1 :(得分:0)

我得到了解决方案,我从java脚本中传递了一年,并且在后端检查该年份与startdate的最后4个字符相同(如果匹配)则将年份值附加到startdate的第1个第10个字符。 然后继续使用剩余代码。

var CheckYearinlast=startdate.Substring(startdate.Length-4);
                if (year.Equals(CheckYearinlast))
                {
                    startdate = startdate.Substring(0, 10) + " " + CheckYearinlast + " 00:00:00";
                }

                var Startdatetime = DateTime.ParseExact(startdate.Substring(0, 24), "ddd MMM d yyyy HH:mm:ss", CultureInfo.InvariantCulture);