【问题标题】:JQuery Timer Countdown different times on weekendsJQuery Timer Countdown 周末不同时间
【发布时间】:2021-12-27 23:09:13
【问题描述】:

所以我将这个每日计时器的代码设置为每天太平洋标准时间下午 3 点倒计时。

function makeTimer() {

    //      var endTime = new Date("29 April 2018 9:56:00 GMT+08:00");  
            var endTime = new Date(today + " 15:00:00");            
            endTime = (Date.parse(endTime) / 1000);

            var now = new Date();
            now = (Date.parse(now) / 1000);

            var timeLeft = endTime - now;

            var days = Math.floor(timeLeft / 86400); 
            var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
            var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600 )) / 60);
            var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));
  
            if (hours < "10") { hours = "" + hours; }
            if (minutes < "10") { minutes = "" + minutes; }
            if (seconds < "10") { seconds = "" + seconds; }

            $("#days").html(days + " <span>Days</span>");
            $("#hours").html(hours + " <span>Hours</span>");
            $("#minutes").html(minutes + " <span>Minutes</span>");
            $("#seconds").html(seconds + " <span>Seconds</span>");

    }

    setInterval(function() { makeTimer(); }, 1000);
// End

我需要能够为周六和周日指定不同的目标时间,每一天都需要不同。

Saturday Timer end is 1:00PM PST
Sunday Timer end is 12:00PM PST

如何使用上面的脚本实现这一点。任何帮助表示赞赏。

【问题讨论】:

  • 您需要使用Date.getDay() 方法来确定一周中的当前日期,其中0 = 星期日,6 = 星期六
  • 谢谢,我不熟悉编码,如何在当前代码中实现?能给我举个例子吗?

标签: javascript jquery


【解决方案1】:

考虑以下内容。

$(function() {
  function updateTimer(timeLeft) {
    var days = Math.floor(timeLeft / 86400);
    var hours = Math.floor((timeLeft - (days * 86400)) / 3600);
    var minutes = Math.floor((timeLeft - (days * 86400) - (hours * 3600)) / 60);
    var seconds = Math.floor((timeLeft - (days * 86400) - (hours * 3600) - (minutes * 60)));

    if (hours < "10") {
      hours = "0" + hours;
    }
    if (minutes < "10") {
      minutes = "0" + minutes;
    }
    if (seconds < "10") {
      seconds = "0" + seconds;
    }

    $("#days").html(days);
    $("#hours").html(hours);
    $("#minutes").html(minutes);
    $("#seconds").html(seconds);
  }

  function makeTimer() {
    var endTime = new Date();
    switch (endTime.getDay()) {
      case 0:
        if (endTime.getHours() >= 12) {
          endTime.setDate(endTime.getDate() + 1);
        }
        endTime.setHours(12, 0, 0);
        break;
      case 6:
        if (endTime.getHours() >= 13) {
          endTime.setDate(endTime.getDate() + 1);
        }
        endTime.setHours(13, 0, 0);
        break;
      default:
        if (endTime.getHours() >= 15) {
          endTime.setDate(endTime.getDate() + 1);
        }
        endTime.setHours(15, 0, 0);
    }
    var now = Date.now();
    return Math.floor((endTime - now) / 1000);
  }

  $(".timer").data("interval", setInterval(function() {
    var tl = makeTimer();
    console.log(tl);
    if (tl <= 0) {
      clearInterval($(".timer").data("interval"));
    } else {
      updateTimer(tl);
    }
  }, 1000))
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="timer">
  <span id="days"></span> Days <span id="hours"></span> Hours <span id="minutes"></span> Minutes <span id="seconds"></span> Seconds
</div>

最佳做法是将事物分解为易于重复的小步骤或功能。剩下的秒数,我们可以更新和显示计时器。只剩下计算从现在到特定时间之间剩下的秒数的步骤。

当我查看日期时,如果是星期六 (6) 或星期天 (0),我们会有不同的时间。如果不是,则设置默认值。

【讨论】:

  • 这项工作很漂亮,除了一个问题。每次计时器到达它的结束时间,在接下来的一个小时内它不会显示任何内容。所以就像在工作日,当计时器需要在下午 3 点重置时,从下午 3 点到 4 点,计时器不会显示任何内容。对此我们能做些什么吗?感谢您的帮助。
  • 我会看看的。怀疑它与该小时的 endTime 小时匹配有关。
  • @aBe 将 Switch 中的逻辑调整为 &gt;= 而不是 &gt;。这样如果时间是下午 2:59,它会显示 1 分钟,如果时间是下午 3:01,它应该是 0 天,23 小时,58 分钟...
猜你喜欢
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多