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

Gag*_*ags 3 javascript jquery internet-explorer date 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Array([0]=>140004454) - Unix Time stamp i get
Run Code Online (Sandbox Code Playgroud)

IE

Array([0]=>NaN)
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 5

不同浏览器的new Date(dateString)解析方式dateString各不相同,有些浏览器比其他浏览器更灵活.

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

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

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

var xAxis = new Date(element.x);
Run Code Online (Sandbox Code Playgroud)

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

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

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