我想檢查日期是否在范圍內。我創建了兩個函式,第一個 func 將型別 str 轉換為 Date,第二個 func 必須找到結果。
let probeArray = [{price: 123, date: '2021-11-27'},
{price: 13, date: '2021-11-15'},
{price: 1, date: '2021-10-2'},
{price: 17, date: '2021-10-1'}];
let startDate = '2021-10-1';
let endDate = '2021-10-20';
// transform str to Date
const toDate = (dateStr) => {
const [year,month,day] = dateStr.split("-");
// console.log('check date')
// console.log([day, month, year])
return new Date(year, month - 1, day 1);
}
function get_staticstic(probeAr, start, end){
let result = null;
let maxDate = toDate(start);
let minDate = toDate(end);
for (let tempEvent of probeAr){
let currentDate = toDate(tempEvent.date);
console.log('maxDate', maxDate);
console.log('minDate', minDate);
console.log('currentDate',currentDate);
if (currentDate >= minDate && currentDate <= maxDate ){
console.log('Correct Date');
}
else{
console.log('Out Side range!!');
}
}
return result
}
get_staticstic(probeArray, startDate, endDate);
但是所有日期的開始結果都是“超出范圍!!”。

uj5u.com熱心網友回復:
代碼問題
toDate功能錯誤。定義應該是return new Date(year, month - 1, day);。無需在日期上加 1。此外,年份和日期不是強制性的,它們也可以是字串。minDate和maxDate里面的錯誤get_staticstic。
作業小提琴
let probeArray = [
{ price: 123, date: '2021-11-27' },
{ price: 13, date: '2021-11-15' },
{ price: 1, date: '2021-10-2' },
{ price: 17, date: '2021-10-1' }
];
let startDate = '2021-10-1';
let endDate = '2021-10-20';
// transform str to Date
const toDate = (dateStr) => {
const [year, month, day] = dateStr.split("-");
// console.log('check date')
// console.log([day, month, year])
return new Date(year, month - 1, day);
}
function get_staticstic(probeAr, start, end) {
let result = null;
let minDate = toDate(start);
let maxDate = toDate(end);
console.log('maxDate', maxDate);
console.log('minDate', minDate);
for (let tempEvent of probeAr) {
let currentDate = toDate(tempEvent.date);
console.log('currentDate', currentDate);
if (currentDate >= minDate && currentDate <= maxDate) {
console.log('Correct Date');
}
else {
console.log('Out Side range!!');
}
}
return result
}
get_staticstic(probeArray, startDate, endDate);
更好的方法
由于所有日期字串 ae 都是標準格式,因此您不需要為日期撰寫決議器函式。您可以使用new Date(dateString)方法直接轉換為日期物件。
作業小提琴
let probeArray = [
{ price: 123, date: '2021-11-27' },
{ price: 13, date: '2021-11-15' },
{ price: 1, date: '2021-10-2' },
{ price: 17, date: '2021-10-1' }
];
let startDate = '2021-10-1';
let endDate = '2021-10-20';
function get_staticstic(probeAr, start, end) {
let result = null;
let minDate = new Date(start);
let maxDate = new Date(end);
console.log('maxDate', maxDate);
console.log('minDate', minDate);
for (let tempEvent of probeAr) {
let currentDate = new Date(tempEvent.date);
console.log('currentDate', currentDate);
if (currentDate >= minDate && currentDate <= maxDate) {
console.log('Correct Date');
}
else {
console.log('Out Side range!!');
}
}
return result
}
get_staticstic(probeArray, startDate, endDate);
uj5u.com熱心網友回復:
您應該設定minDate為開始日期和maxDate結束日期。你做了相反的事情。
let probeArray = [{price: 123, date: '2021-11-27'},
{price: 13, date: '2021-11-15'},
{price: 1, date: '2021-10-2'},
{price: 17, date: '2021-10-1'}];
let startDate = '2021-10-1';
let endDate = '2021-10-20';
// transform str to Date
const toDate = (dateStr) => {
const [year,month,day] = dateStr.split("-");
// console.log('check date')
// console.log([day, month, year])
return new Date(year, month - 1, day 1);
}
function get_statistic(probeAr, start, end){
let result = null;
let minDate = toDate(start);
let maxDate = toDate(end);
for (let tempEvent of probeAr){
let currentDate = toDate(tempEvent.date);
console.log('maxDate', maxDate);
console.log('minDate', minDate);
console.log('currentDate',currentDate);
if (currentDate >= minDate && currentDate <= maxDate ){
console.log('Correct Date');
}
else{
console.log('Out Side range!!');
}
}
return result
}
get_statistic(probeArray, startDate, endDate);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369186.html
標籤:javascript
