簡體   English   中英

如何在JavaScript中對數據時間戳進行排序

[英]How to Sort Data time stamp in javascript

我有一個帶有日期時間戳的數組。 格式例如 2015年11月6日15-47-35.501

我必須從此數組中獲取最大/最新的DateTime時間戳。 因此應用了排序邏輯,但無法正常工作。 而且我只能采用這種格式,否則,如果采用其他格式,以前的記錄將不起作用。

代碼段現為

function somefunction()
{
var creation_dt_newarr = ["11/6/2015 15-47-35.501","11/6/2015 16-19-32.939","11/6/2015 18-31-31.343"]

  creation_dt_newarr = creation_dt_arr.sort(sortFunction);
  var replaced_data = creation_dt_newarr[creation_dt_newarr.length-1];
                        var max_creation_dt_res = replaced_data;
}


function sortFunction(a,b){
    var dateA = new Date(a).getTime();
    var dateB = new Date(b).getTime();
    return dateA > dateB ? 1 : -1;
};

請幫助我,這將如何工作。 提前致謝。

您需要將該日期轉換為有效的格式。 在Google Chrome控制台上,我嘗試以您的格式創建日期:

new Date('11/6/2015 15-47-35.501')
Invalid Date

但是,如果替換-. 在帶有:的時間部分中,它會解析日期:

new Date('11/6/2015 15-47-35.501'.replace(/[-.]/g, ':'));
Fri Nov 06 2015 15:47:35 GMT-0800 (PST)

基於此,我們可以將您的排序功能調整為:

function sortFunction(a,b) {
    var dateA = new Date(a.replace(/[-.]/g, ':')).getTime();
    var dateB = new Date(b.replace(/[-.]/g, ':')).getTime();
    return dateA > dateB ? 1 : -1;
};

我不確定時間是否正確解析-我假設該時間段后的最后一部分是毫秒。 您應該確認它已正確解析,並且如注釋者所建議的那樣,將時間存儲為時間戳當然更好。

這可以幫助:

function somefunction()
{
var creation_dt_newarr = ["11/6/2015 15-47-35.501","11/6/2015 16-19-32.939","11/6/2015 18-31-31.343"];
  //do some preprocessing if that is OK the last three digits like: .501
  creation_dt_newarr.forEach(function(element,i){
      creation_dt_newarr[i] = Date.parse(element.slice(0,-4).replace(/-/g,':')); 
  });
  //use Math.max to get the max date and 
  //to get the result as a date string use the new Date()
  return new Date(Math.max.apply(null, creation_dt_newarr));
}

console.log(somefunction());

暫無
暫無

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

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