簡體   English   中英

JavaScript排序日期順序錯誤

[英]Javascript sorting dates in the wrong order

我不知道為什么Javascript(在Chrome,Safari或NodeJS中運行)似乎對這些日期進行了錯誤排序:

> [
      "2014-05-01T08:06:00.000Z",
      "2014-05-01T06:26:00.000Z",
      "2014-05-01T06:27:00.000Z"
  ].map(function(x) {return new Date(x)}).sort()

產生

[ Thu May 01 2014 01:06:00 GMT-0700 (PDT),
  Wed Apr 30 2014 23:26:00 GMT-0700 (PDT),
  Wed Apr 30 2014 23:27:00 GMT-0700 (PDT) ]

我一直在尋找該日期前后的奇異時間變化,但找不到任何變化。

簡單地調用sort方法將基本上基於字符串比較進行排序。 因此,對於基於日期對象的排序,請使用自定義排序功能。

 console.log( [ "2014-05-01T08:06:00.000Z", "2014-05-01T06:26:00.000Z", "2014-05-01T06:27:00.000Z" ].map(function(x) { return new Date(x) }).sort(function(a, b) { return a - b; }) ) 


如果要對原始數組進行排序,請避免使用map方法,然后在compare函數內部比較日期字符串,然后進行求和。

 console.log( [ "2014-05-01T08:06:00.000Z", "2014-05-01T06:26:00.000Z", "2014-05-01T06:27:00.000Z" ].sort(function(a, b) { return new Date(a) - new Date(b); }) ) 

Array.prototype.sort接受一個回調,該回調可以返回negativepositivezero值以對目標數組進行排序。

[
   "2014-05-01T08:06:00.000Z",
   "2014-05-01T06:26:00.000Z",
   "2014-05-01T06:27:00.000Z"
].sort(function(a, b){
    return (new Date(b) - new Date(a));
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM