有问题的 IF 语句在 Javascript 中进行日期和时间比较(getDay、Date、setHours、显示、隐藏)

Problematic IF statement with date and time comparisons in Javascript (getDay, Date, setHours, show, hide)

我正在尝试根据时间和星期几为网页创建 auto-hide/show 部分。我希望 HTML/CSS 的一部分在每个星期六 9:58am 和 1:04pm 之间自动出现(在页面加载后)。我认为问题出在 Javascript 部分,尤其是 IF 语句。 当我 运行 代码时,会显示 HTML (尽管目前是星期一)。我做了显而易见的事情并更改了 IF 比较的值,这不是比较值是真的情况。我是 Javascript 的绝对新手,所以任何建议都将不胜感激!

Javascript

$(document).ready(function liveplayertimer() { //Declare function, start on page load
  var d = new Date(); //d is date
  var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat
  var startTime = d.setHours(9, 57); //Sets start time for show to 09:57
  var endTime = d.setHours(13, 05); //Sets end time for show to 13:05

  if ((d.getTime() > startTime && d.getTime() < endTime) && n == 6) { //If within time AND on Saturday
    $('#rcdflivediv').show(); //Show the content
  }
  else { //Else
    $('#rcdflivediv').hide(); //Hide the content
  }
}) //End of function

HTML(不完整,暂时只是一个测试占位符)

<div id="rcdflivediv" style="display: none">
  <p>Live NOW! Listen in!</p>
  <a href=" link removed "> (Removed for now)
    <p>Listen live!</p>
  </a>
</div>

CSS,以防万一我搞砸了(不完整,现在只是一个测试占位符)

#rcdflivediv {
  padding: 20px;
  font-family: Montserrat, sans-serif;
  size: 32px;
  background-color: #0077ff;
  color: #ffffff;
}

JavaScript 中的一个 Date 对象是可变的。因此,如果您想获得不同的 startTimeendTimecurrent date,您需要为其创建不同的对象。

var d = new Date(); //d is date
var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat

var startTime = new Date(); 
startTime.setHours(9, 57);//Sets start time for show to 09:57

var endTime = new Date();
endTime.setHours(13, 05

正如 Carsten 在评论中提到的那样,您正在 setHours 之前修改原始日期。