选举于 2023 年 3 月 14 日举行。变量“FLM23”使用我在网上找到的 nthWeekdayOfMonth 函数设置该日期,该函数计算任何月份的第 n 天作为日期。我想让 AddOneYear 函数首先检查 FLM23 的日期和时间是否早于今天的日期和时间。如果是这样,我希望它使用 nthWeekdayOfMonth 将下一个年度选举日期重新分配给“FLM23”,只需将年份加 1 即可。如果该功能正常工作,它将准确打印“2024 年 3 月 12 日星期二 07:00:00 GMT-0400(东部夏令时)”。
我包括了我尝试过的两种方法,但显然必须注释掉一种方法才能测试脚本。首先,我创建了一个名为 NextYear 的变量,用于 AddOneYear 函数内的 nthWeekdayOfMonth 函数,但我无法简单地更改年份,同时保持 FLM23 的其他参数与其原始变量调用相同。其次,我尝试将 today 变量中的 getFullYear 放在参数中,但这没有用。谢谢你的帮助!
function print(s) {
document.write(s + '<br />');
}
function add(s) {
s.setHours(s.getHours() + 7);}
//Attempted Method 1
function AddOneYear(s) {
var today = new Date();
if (s <= today) {
//The following two lines are causing the issues
var NextYear = new Date().getFullYear() + 1;
s = nthWeekdayOfMonth(s, s, new Date(NextYear, s));
}
}
//Attempted Method 2
function AddOneYear(s) {
var today = new Date();
if (s <= today) {
//The following line is causing the issues
s = nthWeekdayOfMonth(s, s, new Date(today.getFullYear() + 1, s));
}
}
function nthWeekdayOfMonth(weekday, n, date) {
var count = 0,
idate = new Date(date.getFullYear(), date.getMonth(), 1);
idate.setHours(idate.getHours() + 7);
while (true) {
if (idate.getDay() === weekday) {
if (++count == n) {
break;
}
}
idate.setDate(idate.getDate() + 1);
}
return idate;
}
// Second Tuesday of March 2023.
var FLM23 = nthWeekdayOfMonth(2, 2, new Date(2023, 2));
AddOneYear(FLM23);
print(FLM23);