gpt4 book ai didi

php - 当用户更改系统时间时,jquery 倒计时会发生变化

转载 作者:行者123 更新时间:2023-12-01 05:40:23 27 4
gpt4 key购买 nike

我正在使用jquery countdown与 php.我已经给出了一个结束日期,即将进入倒计时。我的问题是假设倒计时显示还剩 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>

最佳答案

没有 PHP 的解决方案

您无需编写任何服务器端代码即可使用公共(public) API 来获取当前时间。

在 StackoverFlow 上发现类似的主题:Free Rest API to get current time as string (timezone irrelevant)

TimezoneDb provides a free API: http://timezonedb.com/api

GenoNames also has a RESTful API available to get the current time for a given location: http://www.geonames.org/export/ws-overview.html.

You can use Greenwich, UK if you'd like GMT.

GenoNames 看起来仅限美国,TimezoneDb 则只需注册一个免费的公钥即可。

很少有人推荐timeapi.org,但看起来他们不接受 Ajax 中的跨域请求,并且他们提供的示例不再可用。

使用 PHP 和 jQuery 倒计时配置的解决方案

您还可以使用 serverSync option 要求 jQuery CountDown 与您的服务器同步。

$(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";
?>

但是

请记住,您的用户始终能够更改您的代码并伪造它......因此,如果您需要实现一些安全性,这还不够,您将需要编写一些后端内容。

关于php - 当用户更改系统时间时,jquery 倒计时会发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31097449/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com