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

时间:2011-08-18 13:31:50

标签: php javascript jquery

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

我在php文件中创建了

的unix时间戳
$end = mktime(16, 54, 0, 8, 18, 2011);

并将其复制到下面

倒计时脚本     

<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>

6 个答案:

答案 0 :(得分:3)

不要通过尝试做数学(甚至是失败)来扮演英雄,而应该依赖PHP和JS都可用的本地方法:

// 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是格式化的字符串,例如“2011年4月24日下午4:56”,则需要将以下代码放在上面的代码之前:

$db_time = strtotime($db_time);

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

答案 1 :(得分:1)

我将在这里读一下这些线。我假设基于此问题以及之前的问题,您希望将来某个事件倒计时,并且您从数据库中提取时间戳并为其添加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 );

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在倒数前拨打电话:

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

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

EDIT2:显然,js中的时间戳以毫秒为单位,因此我们还必须乘以PHP时间戳(以秒为单位)。

答案 4 :(得分:0)

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

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

end_date+=9*60*60

答案 5 :(得分:0)

end_date = end_date + ((3600*1000)*9);