为了账号安全,请及时绑定邮箱和手机立即绑定

如何查找从12月1日开始的每个第二个星期二?

如何查找从12月1日开始的每个第二个星期二?

有只小跳蛙 2023-08-10 14:33:03
如果时间在范围内,我已经能够显示/隐藏按钮,但是,我如何修改它以检查日期是否是从 12 月 1 日开始的每个第二个星期二?<p id="newButton">LIVE</p>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) { newButton.style.display = "block"; alert("in time");}else { newButton.style.display = "none"; alert("offline");}}, false);
查看完整描述

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)


查看完整回答
反对 回复 2023-08-10
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信