JavaScript new Date()在IE,Safari中返回NaN

时间:2016-05-03 10:35:41

标签: javascript jquery date internet-explorer highcharts

我使用highcharts绘制图表并使用new Date()函数解析日期。在Chrome和FF中,日期解析正常。

但是在IE和Safari中,我得到的是 NaN和无效的日期格式

以下是我从(element.x)数组

中的后端获取的数据
2016, 04,05
2016, 04,06
2016, 04,07
2016, 04,08
2016, 04,09
2016, 04,10

现在,我将它转换为JavaScript中的Date对象,如下所示:

//Loop starts
var xAxis = new Date(element.x);
datas.push([Date.UTC(xAxis.getUTCFullYear(),xAxis.getUTCMonth(), xAxis.getUTCDate())]);
//Loop ends

现在,此操作在IE中返回 NaN ,但在chrome中效果非常好,如下所示:

Array([0]=>140004454) - Unix Time stamp i get

IE

Array([0]=>NaN)

1 个答案:

答案 0 :(得分:5)

new Date(dateString)解析dateString的方式因浏览器而异,有些浏览器比其他浏览器更灵活。

创建日期最安全的方法是......

  1. 将您的element.x拆分为其组件
  2. 将这些组件转换为整数值
  3. 使用语法new Date(year, month, day)
  4. 创建新日期

    所以,而不是......

    var xAxis = new Date(element.x);
    

    ...像这样创建你的日期:

    var xvals = element.x.split(',');
    var xAxis = new Date(
        parseInt(xvals[0]),
        parseInt(xvals[1]) - 1,
        parseInt(xvals[2])
    );
    

    这应该适用于所有浏览器!