代码之家  ›  专栏  ›  技术社区  ›  walter alexander

根据服务器小时数创建倒计时

  •  0
  • walter alexander  · 技术社区  · 8 年前

    我需要创建一个倒计时来显示某个促销活动何时结束,我所能做的就是通过google tag manager进行前端访问,首先我用js获取服务器小时数,现在我需要根据服务器小时数而不是本地小时数设置倒计时小时数。

     <script>
      // it´s giving the correct hour
      var getserver = new Date();
     getserver.setHours(getserver.getHours());
     var newtets = getserver.toUTCString();
     alert(newtets);
    
    
    
     // using a basic countdown
       var countDownDate = new Date("Sep 5, 2018 15:37:25").getTime();
    
      // Update the count down every 1 second
     var x = setInterval(function() {
    
    // Get todays date and time
    var now = new Date().getTime();
    /* 
     var now = new Date();
    now.setHours(now.getHours());
    var newnow = now.toUTCString();
    i tried to replace now with newnow but is not working, how can i transform this
    */
    
    
    // Find the distance between now an the count down date
    var distance = countDownDate - now;
    
    // Time calculations for days, hours, minutes and seconds
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    
    // Output the result in an element with id="demo"
    document.getElementById("demo").innerHTML = days + "d " + hours + "h "
    + minutes + "m " + seconds + "s ";
    
    // If the count down is over, write some text 
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "EXPIRED";
      }
    }, 1000);
    
    </script>
    

    var now=新日期()。getTime();就是获取时间并使用它进行倒计时,这是本地时间,如何获取var now=new Date()。getTime();作为服务器小时,我通过1脚本获得

    1 回复  |  直到 8 年前
        1
  •  1
  •   Carles Pibernat    8 年前

    获取更新的服务器小时数的唯一方法是使用ajax调用。 问题是,对服务器的请求不是即时的,因此会有延迟。

    也许更好的方法是获取用户时区并计算以该信息结尾的促销。

    您可以使用以下方法获取用户时区偏移:

    var offset = new Date().getTimezoneOffset();