1 回答
TA贡献1824条经验 获得超5个赞
这是我在评论中建议的:
const msPerDay = 24 * 60 * 60 * 1000;
window.addEventListener("load", function(){
var newButton = document.getElementById("newButton");
const start = 12 * 60 + 30;
const end = 13 * 60 + 30;
const date = new Date();
const now = date.getHours() * 60 + date.getMinutes();
if(start <= now && now <= end
&& Math.round((date - 1606798800000) / msPerDay) % 14 === 0) {
newButton.style.display = "block";
alert("in time");
}
else {
newButton.style.display = "none";
alert("offline");
}
}, false);
请注意问题中有趣的歧义。“检查日期是否是从 12 月 1 日开始的每个第二个星期二?” 可以按照预期读作代表交替的星期二。但我最初的误读“任何一个月的第二个星期二”是完全可以理解的,如果考虑到所指出的开始日期本身就是星期二,我认为可能性稍小一些。
1606798800000仅仅是 的结果new Date('2020-12-01').getTime()。不简单地在代码中包含类似的内容可能是一个愚蠢的优化。所以替代版本可能是
if (start <= now && now <= end &&
Math.round((date - new Date(2020, 11, 1).getTime()) / msPerDay) % 14 === 0)
添加回答
举报