我正在嘗試根據時間戳的小時數進行過濾(在此示例中,過濾時間為上午 8 點之后的所有時間):
var beginningTimeValue = new Date('2020-01-01 08:00:00');
var unique = [["value","value","value","value","12/01/2021 00:03:35","value"],["value","value","value","value","01/01/2020 00:03:35","value"], ["value","value","value","value","01/01/2020 08:03:35","value"], ["value","value","value","value","01/01/2020 13:03:35","value"]]
if(!beginningTimeValue == ""){
unique = unique.filter(function(row)
{
var rYear = row[4].substring(6, 10);
var rMonth = row[4].substring(3, 5);
var rDay = row[4].substring(0, 2);
var rHour = row[4].substring(11, 13);
var rMinute = row[4].substring(14, 16);
var rSecond = row[4].substring(17, 19);
var bTime = new Date(parseInt(rYear, 10), parseInt(rMonth, 10), parseInt(rDay, 10), parseInt(rHour, 10), parseInt(rMinute, 10), parseInt(rSecond, 10));
console.log("ODATE = " rYear "/" rMonth "/" rDay "_" rHour ":" rMinute ":" rSecond);
console.log("BDATE = " bTime.getFullYear() "/" bTime.getMonth() "/" bTime.getDate() "_" bTime.getHours() ":" bTime.getMinutes() ":" bTime.getSeconds());
beginningTimeValue.setYear(bTime.getYear());
beginningTimeValue.setMonth(bTime.getMonth());
beginningTimeValue.setDate(bTime.getDate());
if(bTime.getTime() >= beginningTimeValue.getTime()){
console.log(bTime.getTime() " VS " beginningTimeValue.getTime());
}
else{
console.log("FALSE");
}
return bTime.getTime() >= beginningTimeValue.getTime();
}
);
}
console.log(unique);
我已經除錯了我的方法,發現在第二個 IF 中我不會得到 FALSE 值,但是我不知道為什么 .getTime() 函式為我的控制臺日志回傳了截然不同的值:
“1613084615000 VS -58345116808000”
“1580558615000 VS -58377689608000”
uj5u.com熱心網友回復:
問題出在以下行:
beginningTimeValue.setYear(bTime.getYear());
(已棄用)getYear()函式回傳
[a] 表示給定日期年份的數字,根據當地時間減去 1900。
(也已棄用)setYear()功能
[...] 將任何兩位數解釋為偏移量
1900
在您的情況下,getYear()回傳一個類似于 的值121,它不是兩位數。當您隨后setYear()使用該值呼叫時,您會得到一個設定為 121 年而不是 2021 年的日期。
由于getTime()回傳自 1970 年以來的毫秒數,而 121 是在 1970 年之前,因此您得到一個負數。
TL;DR:使用getFullYear()andsetFullYear()代替getYear()and setYear()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494015.html
下一篇:如何正確使用chartjs格式?
