我正在使用php jquery countdown。我已经给出了一个结束倒计时的结束日期。我的问题是让我们假设倒计时还剩1小时但是当用户改变其系统时间时倒计时会改变。如果用户将时间缩短1小时,那么计数器将显示剩下的2小时。有没有办法让服务器时间更精确的时间而不是用户系统时间。请帮忙。
如何让服务器时间不是用户系统时间?
下面是我的jquery代码
if($(pluginsArray[6]).length){
$(pluginsArray[6]).each(function(){
var $this = $(this),
dateObj = $this.data();
var finalDate = new Date(dateObj.year, dateObj.month, dateObj.day, dateObj.hours, dateObj.minutes);
$this.countdown({
timezone: +4,
until : finalDate,
expiryText: '<div class="over">Closed.</div>',
onExpiry : function(){
setTimeout(function( ) { location.reload(); }, 5000);
},
format :'DHMS',
layout : '<b>{dn}</b> <span class="fs_medium d_inline_b m_right_5">days</span> <b>{hn}</b> <span class="fs_medium d_inline_b m_right_5">hrs</span> <b>{mn}</b> <span class="fs_medium d_inline_b m_right_5">min</span> <b>{sn}</b> <span class="fs_medium">sec</span>'
});
});
}
这是我在php中所做的
<div class="countdown color_redc d_inline_m fs_large second_font lh_small f_xs_20" style="font-size:26px;" data-year="<?= $aDate[0] ?>" data-month="<?= ($aDate[1] - 1) ?>" data-day="<?= $aDate[2] ?>" data-hours="<?= $aDate[3] ?>" data-minutes="<?= $aDate[4] ?>"></div>
答案 0 :(得分:0)
如果不编码任何服务器端,您可以使用公共API 来获取当前时间。
在StackoverFlow上找到类似的主题:Free Rest API to get current time as string (timezone irrelevant)
TimezoneDb提供免费的API:http://timezonedb.com/api
GenoNames还有一个RESTful API可用于获取当前时间 给定的位置:http://www.geonames.org/export/ws-overview.html。
如果您喜欢GMT,可以使用英国格林威治。
GenoNames 看起来只适用于美国, TimezoneDb 适用于您只需注册免费公钥。
很少有人推荐 timeapi.org ,但看起来他们不接受Ajax中的CROSS-DOMAIN请求,并且他们提供的例子不再可用。
此外,您可以让jQuery CountDown使用serverSync
option
$(selector).countdown({ until:liftoffTime, serverSync: serverTime}); function serverTime() { var time = null; $.ajax({url: 'http://myserver.com/serverTime.php', async: false, dataType: 'text', success: function(text) { time = new Date(text); }, error: function(http, message, exc) { time = new Date(); }}); return time; }
PHP文件:serverTime.php
<?php $now = new DateTime(); echo $now->format("M j, Y H:i:s O")."\n"; ?>
请记住,您的用户将始终能够更改您的代码并伪造它......所以如果您需要实现某些安全性,这还不够,您需要编写一些后端内容。