根据时间jquery显示/隐藏div

时间:2018-04-05 08:04:24

标签: jquery time range hide show

我有一些代码,我认为应该根据一天中的时间显示或隐藏两个div。它目前显示“封闭”的div,尽管时间晚于它 - 我错过了什么?该网站仅在两台机器上运行,因此只需要在它们上面设置时间。

$(document).ready(function () {
var d = new Date();
var time = d.getHours() + ":" + d.getMinutes();

if (time > ("08:29") && time < ("16:29")) {
    $('.hours').show();
    $('.closed').hide();
}
else {
    $('.hours').hide();
    $('.closed').show();
    }
});

4 个答案:

答案 0 :(得分:1)

var time = new Date();

添加两个变量:

var startTime = new Date().setHours(8,29);
var endTime = new Date().setHours(16,29);

if语句中使用此表达式

if (time.getTime() > startTime && time.getTime() < endTime) {

答案 1 :(得分:0)

日期对象上的

getHours()getMinutes()并非零填充。所以,如果它是08:03,那将是8:3。

或许考虑使用MomentJS,您可以在某个日期调用format并将其解析为所需的格式。

编辑:作为快速解决方法,请使用d.toISOString().split('T')[1]

答案 2 :(得分:0)

您不使用字符串比较时间。您需要两个日期对象来比较它们。

更简单的方法是创建另外两个日期,并根据低和高时间限制设置日期。然后将您的来源时间与限制进行比较。

$(document).ready(function () {
  var d = new Date();
  var low = new Date();
  var high = new Date();

  low.setHours(8);
  low.setMinutes(29);
  high.setHours(16);
  high.setMinutes(29);

  if (d.getTime() > low.getTime() && d.getTime() < high.getTime()) {
    $('.hours').show();
    $('.closed').hide();
  } else {
    $('.hours').hide();
    $('.closed').show();
  }
});

Date#getTime()返回毫秒数,这更容易比较。

答案 3 :(得分:0)

我为你准备了演示版here,我们将在其中做

var start = new Date();
var end = new Date();
var time = new Date().getTime();

if (time > start.setHours(8,29) && time < end.setHours(16,29))