我需要使用 javascript 获取接下来的 4 个星期四,并将结果附加到选择框中,但如果当前日期已超过星期日,则不要获取第一个星期四(一周后开始)。
例如:
当前日期 = 2021 年 6 月 12 日星期六
获取接下来的 4 个星期四:2021 年 6 月 17 日、2021 年 6 月 24 日、2021 年 7 月 1 日、2021 年 7 月 8 日。
当前日期 = 2021 年 6 月 15 日,星期二 - 不要得到 2021 年 6 月 17 日,因此列表为:
2021 年 6 月 24 日、2021 年 7 月 1 日、2021 年 7 月 8 日、2021 年 7 月 15 日。
我最初有一些代码可以得到 X 个月的星期四,但这并不是我想要的,因为它在一个月内得到所有星期四,而不是接下来的 4 个星期四。我猜我可以重用获取星期几代码,并将其修改为仅获取接下来的 4 天……然后以某种方式过滤日期是否已超过星期日?
function getNextMonths(num) {
let current = new Date();
let months = [];
for (let i = 0; i <= num; i++) {
let next = new Date();
next.setDate(1); // First day...
next.setMonth(current.getMonth() + i); //...of next month
months.push(next);
}
return months;
}
function getDayOfWeek(num_week_day, dates) {
let days = [];
var today = new Date();
for (let i = 0; i < dates.length; i++) {
// Evaluate current month
let current = {
year: dates[i].getFullYear(),
month: dates[i].getMonth()
};
current.days = new Date(current.year, current.month + 1, 0).getDate();
// Loop & evaluate days
for (let d = 1; d <= current.days; d++) {
let date = new Date(current.year, current.month, d);
if (date.getDay() == num_week_day) {
if(date.getTime() > today.getTime()){
days.push(date);
}
}
}
}
return days;
}
//Convert to Nice looking Date
function dateToString(date){
return date.toLocaleDateString("en-GB", {
dateStyle: 'full'
});
}
//Output date as mm/dd/yyyy for ouput value
function dateToValue(date){
return date.toLocaleDateString("en-GB", {
year: "numeric",
month: "short",
day: "numeric",
});
}
// Get all Thursdays (4th day of the week) within the next 2 months.
var select = document.getElementById("arr");
var elmts = getDayOfWeek(4, getNextMonths(1));
// Main function
jQuery( document ).ready(function() {
jQuery('#sub_start_date').find('option').remove();
jQuery.each(elmts, function(i, p) {
jQuery('#sub_start_date').append(jQuery('<option></option>')
.val(dateToValue(p)).html(dateToString(p)));
});
});