【问题标题】:Different date format in javascript on IE 9 and IE Latest VersionsIE 9 和 IE 最新版本上 javascript 中的不同日期格式
【发布时间】:2017-05-04 21:28:04
【问题描述】:

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

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

在 IE 版本 9 中:“Mon Nov 10 00:00:00 UTC+0530 2014”

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

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

但是当我得到旧的浏览器价值时,我得到了错误。 那么如何在 c# 中转换 datetime 对象中的旧浏览器值和最新浏览器值。

【问题讨论】:

  • 你如何得到那个字符串?你如何传递价值?

标签: javascript c# internet-explorer datetime


【解决方案1】:

由于您的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,它将格式作为字符串数组,这样您就可以提供两种格式并解析匹配的字符串。

【讨论】:

    【解决方案2】:

    我得到了解决方案,我从 java 脚本传递年份,并在后端检查该年份是否与 startdate 的最后 4 个字符匹配,然后将年份值附加到 startdate 的第 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);
    

    【讨论】:

      猜你喜欢
      • 2015-11-05
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      相关资源
      最近更新 更多