JavaScript日期字符串排序在IE&铬

时间:2018-02-02 13:48:45

标签: javascript sorting

以下JavaScript行在Chrome和IE上的执行方式不同。

var months =  ["Apr-2016", "Jun-2016", "Feb-2016", "Jan-2016",  "Mar-2016",  "May-2016", "Feb-2016", "Jun-2016", "Feb-2016", "Feb-2016", "Jan-2016"] ;
var uniqueMonths = months.filter( function (value, index, self) { return self.indexOf(value) === index;} );
uniqueMonths.sort(function(a,b){ return ((new Date(a).getTime()) - (new Date(b).getTime()));  });

在IE上我得到了

uniqueMonths = ["Apr-2016", "Jun-2016", "Feb-2016", "Jan-2016", "Mar-2016", "May-2016"]

在Chrome上我得到了

uniqueMonths =  ["Jan-2016", "Feb-2016", "Mar-2016", "Apr-2016", "May-2016", "Jun-2016"] ;

这个beahaviour的原因是什么?

1 个答案:

答案 0 :(得分:1)

您提供的日期文字无效。似乎Chrome仍在解析它。在这方面,Firefox跟随IE一样,正如它所说:

new Date("Apr-2016")
  

无效日期

最好使用ISO日期,或者如果你不这样做,我建议使用一个库,它提供了一种用指定的格式字符串初始化JavaScript Date的方法。不幸的是,原生JavaScript缺少此功能。