首页 > 解决方案 > 你如何在 JavaScript 中创建一个 12 小时的时间

问题描述

我想要一个计时器,它可以在 12 小时后执行某些操作。我想早上 6 点开始,下午 6 点结束。时间只需12小时。我想知道如何调整时间。我想做的是将我当前的 12 小时制转换为 24 小时制。

我正在寻找工作示例

代码示例在此 CodePen 链接 Timer Link中

    (function () {
      const second = 1000,
            minute = second * 60,
            hour = minute * 60,
            day = hour * 24;

      let birthday = "Nov 25, 2020 00:00:00",
          countDown = new Date(birthday).getTime(),
          x = setInterval(function() {    

            let now = new Date().getTime(),
                distance = countDown - now;

            document.getElementById("days").innerText = Math.floor(distance / (day)),
              document.getElementById("hours").innerText = Math.floor((distance % (day)) / (hour)),
              document.getElementById("minutes").innerText = Math.floor((distance % (hour)) / (minute)),
              document.getElementById("seconds").innerText = Math.floor((distance % (minute)) / second);

            //do something later when date is reached
            if (distance < 0) {
              let headline = document.getElementById("headline"),
                  countdown = document.getElementById("countdown"),
                  content = document.getElementById("content");

              headline.innerText = "It's my birthday!";
              countdown.style.display = "none";
              content.style.display = "block";

              clearInterval(x);
            }
            //seconds
          }, 0)
      }());

标签: javascripthtmlcss

解决方案


这应该可以工作,它会在上午 8:00 时显示直到晚上 8:00 的时间。这是我用来测试它的笔Time Until

var doIt = false;
var now = new Date();
var seconds;
var date1;
var eight = new Date();
eight.setHours(20, 0, 0);
var date2;
var toHHMMSS = (secs) => {
    var sec_num = parseInt(secs, 10)
    var hours   = Math.floor(sec_num / 3600)
    var minutes = Math.floor(sec_num / 60) % 60
    var seconds = sec_num % 60

    return [hours,minutes,seconds]
        .map(v => v < 10 ? "0" + v : v)
        .filter((v,i) => v !== "00" || i > 0)
        .join(":")
}
function diff_seconds(dt2, dt1) 
 {

  var diff =(dt2.getTime() - dt1.getTime()) / 1000;
  return Math.abs(Math.round(diff));

 }
window.setInterval(function(){
    date2 = new Date();
    if(date2.getHours() >= 8) {
        doIt = true;
    }
}, 1);
window.setInterval(function(){
    date2 = new Date();
    if(date2.getHours() >= 20){
        doIt = false;
    }
}, 1);
window.setInterval(function(){
  if(doIt === true){
    seconds = diff_seconds(new Date(), eight);
    document.querySelector("p").textContent = "It is from 8AM to 8PM";
    document.querySelector("#hours").textContent = toHHMMSS(seconds);
  }
}, 1000)
<p>It is not 8 AM yet</p>
<div id="hours"></div>

希望它有效!


推荐阅读