我在使用不同版本的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对象中的旧浏览器值和最新浏览器值答案 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))
{
}
现在您的DateTimeOffset
为10.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);