javascript - 尝试使用当前时间与关闭时间javascript进行倒计时

标签 javascript jquery math time parseint

http://jsbin.com/ocuceb/6/edit

上面的链接是完整代码所在的位置,我正在尝试获取一个倒计时器,了解距离企业关门还剩多少小时和分钟。

function countDown() {
  var d = new Date();
  var hour = d.getHours();
    if(hour<10){hour="0"+hour;}
      else if(hour>12){hour=hour - 12;}
      var minutes = d.getMinutes();
    if(minutes<10){minutes="0"+minutes;}
      var seconds = d.getSeconds();
    if(seconds<10){seconds="0"+seconds;}
  var open = weekday[day.getDay()].open.replace(/am/g,'');
  var close = weekday[day.getDay()].close.replace(/pm/g,'');
  open = parseInt(open,10);
  close = parseInt(close,10); 
 //confused here!  
   var timeClose = close;
   var timeRemaining = Math.floor(d.getHours() - timeClose);
   document.write('<br><br>Close At: '+timeClose+"pm<br>Time Remaining:"+timeRemaining);
  }

这就是我遇到麻烦的地方,我可以获得打开的时间和关闭的时间。最初我尝试过这个

 var timeClose = parseInt(close+':00:00',10);
 var difference = Math.floor(d.getDay() - timeClose);

当然这不起作用,它要么说“未定义”,要么说“NaN”,我不知道如何解决这个问题,虽然客户要求这样做,但时间对我来说是全新的,从来不需要这个。它规定了实际时间、关闭时间,并显示图像,如果时间在开放到关闭时间(基本上是开放的 NEON 标志)以及过去关闭的时间(关闭的 NEON 标志)...我想它会非常简单,尽管我有很多棘手的弯道要通过。

最佳答案

JavaScript 时间不以 12 小时格式思考。它以 24 小时格式思考。更改对象数组以反射(reflect)(22 为晚上 10 点):

hours[0]= {open:"8:00:00",close:"22:00:00"};
hours[1]={open:"8:00:00",close:"22:00:00"};
hours[2]={open:"8:00:00",close:"22:00:00"};
hours[3]={open:"8:00:00",close:"22:00:00"};
hours[4]={open:"8:00:00",close:"22:00:00"};
hours[5]={open:"8:00:00",close:"22:00:00"};
hours[6]={open:"8:00:00",close:"22:00:00"};

此外,像这样解析 int 可能会导致问题:

var timeClose = parseInt(close+':00:00',10);

您应该对冒号之间的所有内容进行子串,以获得所需的小时或分钟。

var timeClose = parseInt(open.substring(0,open.indexOf(":")),10);

此外,根据您的设置方式,在工作时间(或晚上 10 点之前),您将始终得到一个负数,因为您从关闭时间中减去了当前时间。如果现在是晚上 8 点,关门时间是晚上 10 点,那么我们还剩下 -2 小时?切换操作数以从 time 中减去 getHours:

var timeRemaining = Math.floor(timeClose - d.getHours());

之后,您可以检查 timeRemaining 是否为负值。如果为负数,则意味着业务已关闭,您可以修改输出消息以反射(reflect)这一点,即

var timeRemaining = Math.floor(timeClose - d.getHours());
if (timeRemaining < 0) {
    output = "Sorry we are closed already";
} else {
    output = "You have " + timeRemaining + " to come in and shop till you drop";
}

关于javascript - 尝试使用当前时间与关闭时间javascript进行倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17287381/

相关文章:

javascript - d3js 为时间刻度轴设置 tickValues

php - 使用 AJAX 从客户端插入 mySQL

math - float 学有问题吗?

java - 游戏导弹的定向螺旋

c++ - 表示 "ping-pong"值的无分支方式?

javascript - 滚动到长 div 中的元素

javascript - AngularJS - 将 $index 显示为 char

javascript - 将自定义下一张幻灯片按钮添加到 Unslider 脚本

javascript - 为什么我不能使用 javascript 和 jquery 读取文本文件?

JQuery - 结合宽度和隐藏效果