我有一系列相隔两周星期日的日期:
var payPeriodArray = ['08/04/2019',
'08/18/2019',
'09/01/2019',
'09/15/2019',
'09/29/2019',
'10/13/2019',
'10/27/2019',
'11/10/2019',
'11/24/2019',
'12/08/2019',
'12/24/2019'
]
如果我想拉出今天(2019 年 9 月 3 日)之后的下一个星期日并将其设置为 suggest_start_date,我将如何使用 Javascript 做到这一点?
var proposed_start_date;
for(var i=0; i<payPeriodArray.length; i++){
if(payPeriodArray[i].ppStart > today){
proposed_start_date = ?
}
}
最佳答案
@RobG 提出了一个很好的观点,即不建议使用 new Date(d)
。请参阅this question为什么。我已更改代码以使用 parseDate
函数。
您可以使用Date
对象来比较日期。
// parse a date in mm/dd/yyyy format
function parseDate(input) {
var parts = input.split('/');
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[2], parts[0]-1, parts[1]); // Note: months are 0-based
}
var payPeriodArray = [
'08/04/2019',
'08/18/2019',
'09/01/2019',
'09/15/2019',
'09/29/2019',
'10/13/2019',
'10/27/2019',
'11/10/2019',
'11/24/2019',
'12/08/2019',
'12/24/2019'
];
var proposed_start_date, today = new Date();
for(var i=0; i<payPeriodArray.length; i++){
if(parseDate(payPeriodArray[i]) > today){
proposed_start_date = payPeriodArray[i]
break;
}
}
console.log(proposed_start_date);
请注意我添加的break
,一旦找到下一个付款周期就停止循环非常重要,否则您将始终获得数组中的最后一个日期。
您还可以使用 find
简化循环
// parse a date in mm/dd/yyyy format
function parseDate(input) {
var parts = input.split('/');
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[2], parts[0]-1, parts[1]); // Note: months are 0-based
}
var payPeriodArray = [
'08/04/2019',
'08/18/2019',
'09/01/2019',
'09/15/2019',
'09/29/2019',
'10/13/2019',
'10/27/2019',
'11/10/2019',
'11/24/2019',
'12/08/2019',
'12/24/2019'
];
var proposed_start_date = payPeriodArray.find(d => parseDate(d) > new Date());
console.log(proposed_start_date);
关于Javascript-获取日期数组中的下一个可用日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777881/