[英]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.