如何在我的jQuery脚本上添加+9小时


How to add +9 hours on my jQuery script?

我如何在下面的脚本上添加+9小时?我不喜欢只添加9个小时到正确的时间,例如,如果我想它13:22:54使它22:22:54这工作,但在脚本上。

在php文件中创建unix时间戳

$end = mktime(16, 54, 0, 8, 18, 2011);

并复制到

下面<<p> 倒计时脚本/strong>
<script type="text/javascript">
var end_date = new Date(<?php echo $end; ?>*1000);
$(document).ready(function() {
    $("#time").countdown({
        date: end_date,
        onComplete: function( event ){
            $(this).html("completed");
        },
        leadingZero: true
    });
});
</script>
<p id="time" class="time"></p>

你应该依靠本地方法,PHP和JS都可以使用,而不是通过尝试time Math来玩英雄(甚至会严重失败):

// gets the time 9 hours from now
// you can give a 2nd parameter to specify when is "now"
$date = strtotime('+9 hours');

:

// get the time right now
var date = new Date()
// add 9 hours, don't worry about jumping the 24hr boundary, JS resolves correctly.
date.setHours(date.getHours()+9)
编辑:

由于OP说他想使用来自DB的TS,这里是相关代码:

$date = strtotime('+9 hours', (int)$db_time);

注意:如果$db_time是格式化字符串,如"24 April 2011, 4:56 pm",则需要在上面的代码之前添加以下代码:

$db_time = strtotime($db_time);

但是,我建议您检查其他方法来解析时间

我要在这里读一下字里行间的意思。根据这个问题和前面的问题,我假设你想要一个未来事件的倒计时,你正在从数据库中提取时间戳,并添加9个小时,以获得未来事件的时间。

假设这样,由于时区和用户的时钟可能或多或少关闭的事实,您不能使用前面的大多数(任何?)答案。因此,如果你在服务器上计算事件应该在5点钟触发,并将该信息发送给距离服务器3个时区的用户,那么倒计时也将延迟3小时(因为当用户所在的位置是5点钟时,服务器所在的位置可能是2或8点钟)。

解决方案是计算事件发生前的剩余时间,并将信息发送给浏览器。这样,倒计时将独立于用户的时区或他们的计算机时钟。例如,如果事件是在5点,现在是4点,告诉浏览器设置60*60*1=3600秒的计时器。

使用Christian的部分回答,在服务器上做这样的事情(假设$db_time包含从数据库检索的Unix时间戳):

$date = strtotime('+9 hours', (int)$db_time);
$timeUntilEvent = $date - time();

现在$timeUntilEvent包含事件发生前的秒数。在JavaScript中,将这个数字添加到计时器中:

var end_date = new Date();
end_date.setTime( end_date.getTime() + <?php echo $timeUntilEvent; ?> * 1000 );

现在,无论用户的时钟设置为什么时间,计时器都将在正确的时间触发。

var end_date = new Date((<?php echo $end; ?>+32400)*1000);
end_date = end_date + ((3600*1000)*9);

mktime返回秒数,因此只需添加所需的秒数

使用php创建的end_date,添加以下行:

end_date+=9*60*60

在倒计时前调用:

end_date = end_date.setTime((end_date + (9 * 3600)) * 1000).toGMTString();

编辑:我删除了get_time()和"* 1000",因为end_date已经是UNIX时间戳。

EDIT2:显然,在js的时间戳是毫秒,所以我们也必须乘以PHP时间戳(这是秒)。