排序日期对象数组不能在javascript中工作

时间:2016-11-30 01:59:36

标签: javascript arrays sorting date

我下面有一个JavaScript数组。

 const arr = [
     "2016-10-10 12:03:05",
     "2016-10-10 12:03:05",
     "2016-10-10 2:30:01",
     "2016-10-10 2:30:01",
     "2016-10-10 2:00:06",
     "2016-10-10 2:00:06",
     "2016-10-10 2:00:06",
     "2016-10-10 1:04:01",
     "2016-10-10 1:04:01"
 ];

我想先按降序或最新日期排序。

我期待下面的代码为我排序数据

 console.log('the real sort is', arr.sort((a,b) => moment(b).diff(moment(a))));

但是,以上打印

[ 
  "2016-10-10 12:03:05", 
  "2016-10-10 12:03:05", 
  "2016-10-10 2:30:01", 
  "2016-10-10 2:30:01", 
  "2016-10-10 2:00:06", 
  "2016-10-10 2:00:06", 
  "2016-10-10 2:00:06", 
  "2016-10-10 1:04:01", 
  "2016-10-10 1:04:01"
]

和 console.log('真正的排序是',arr.sort((a,b)=>时刻(a).diff(时刻(b))));

返回

[
 "2016-10-10 1:04:01",
 "2016-10-10 1:04:01",
 "2016-10-10 2:00:06",
 "2016-10-10 2:00:06",
 "2016-10-10 2:00:06",
 "2016-10-10 2:30:01",
 "2016-10-10 2:30:01",
 "2016-10-10 12:03:05",
 "2016-10-10 12:03:05"
]

在我看来它只是反转索引。请问我该如何对这种数组进行相应的排序?任何帮助将不胜感激

更新

非常抱歉浪费你的时间。我天真地忘了,误以为并且期待时间是12小时格式,因此期待下午时间晚于时间。不仅我错了,而且事实证明我们有一个角度管道将显示器转换为12小时当量和当地时间。所以我的转换应该没问题,不幸的是我花了很多时间才意识到这一点。我再次道歉。

1 个答案:

答案 0 :(得分:1)

您可以在没有moment的情况下轻松完成此操作:

arr.sort((a, b) => new Date(a) - new Date(b));

当你减去2个日期对象时,将调用它们的valueOf()方法,它返回与该日期对应的时间戳。