如何在下面的脚本中添加+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>
答案 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);