Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建基于服务器小时数的倒计时_Javascript_Jquery_Countdown - Fatal编程技术网

Javascript 创建基于服务器小时数的倒计时

Javascript 创建基于服务器小时数的倒计时,javascript,jquery,countdown,Javascript,Jquery,Countdown,我需要创建一个倒计时来显示某个促销活动何时结束,我所拥有的只是通过google tag manager的前端访问,首先我用js获取服务器小时数,现在我需要根据服务器小时数而不是本地小时数设置倒计时小时数 <script> // it´s giving the correct hour var getserver = new Date(); getserver.setHours(getserver.getHours()); var newtets = getserver.

我需要创建一个倒计时来显示某个促销活动何时结束,我所拥有的只是通过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 getserver=new Date();
getserver.setHours(getserver.getHours());
var newtets=getserver.toutString();
警报(纽特);
//使用基本倒计时
var countDownDate=新日期(“2018年9月5日15:37:25”).getTime();
//每1秒更新一次倒计时
var x=setInterval(函数(){
//获取今天的日期和时间
var now=new Date().getTime();
/* 
var now=新日期();
now.setHours(now.getHours());
var newnow=now.toutString();
我试图用newnow替换now,但不起作用,我该如何改变它
*/
//找出现在和倒计时日期之间的距离
var距离=倒计时日期-现在;
//天、小时、分钟和秒的时间计算
变量天数=数学楼层(距离/(1000*60*60*24));
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//在id=“demo”的元素中输出结果
document.getElementById(“demo”).innerHTML=days+d+hours+h
+分钟+米+秒+秒;
//如果倒计时结束,写一些文字
如果(距离<0){
净间隔(x);
document.getElementById(“demo”).innerHTML=“过期”;
}
}, 1000);

var now=new Date().getTime();获取时间并使用它倒计时,这是本地时间,如何获取var now=new Date().getTime();要成为服务器小时数,我使用1脚本获得了它。获得更新的服务器小时数的唯一方法是使用ajax调用。 问题是对服务器的请求不是即时的,因此会有延迟

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

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

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

我可以编辑时间并添加与服务器匹配所需的额外小时数,但问题是,这是针对不同国家的,因为我不能这样做,例如,西班牙小时数的服务器,我也将在中美洲显示。这就是为什么我只需要服务器小时数,但小时数必须使用用户本地小时数显示,不是吗?我认为最好的解决方案是将用户时区偏移量添加到服务器小时,而不是相反;替换新日期().getTime();给出了错误的日期,你能解释一下如何准确地使用它吗?我正在运行一个测试,var countDownDate=new date(“2017年12月28日23:59:59”)。getTimezoneOffset();确保它匹配但不工作
getTimezoneOffset()
方法返回UTC和本地时间之间的时区差(以分钟为单位),因此必须将偏移量添加到服务器创建的日期。您有一个JSFIDDLE,我看到该文件是我所需要的,但是日期var countDownDate=new date(“2017年12月28日23:59:59”).getTime();是倒计时的意思,从现在到那时,它应该显示来自中美洲的0d 12h 7m 17s和来自西班牙的0d 7h 7m 17s,这基本上就是我要找的