我的网站有问题。我用PHP代码和JS创建了一个倒数计时器。
我的问题是当我回显我的变量abc时。没关系(回复正确的时间戳),但是当我通过使用“DB - 服务器当前时间+客户端时间的结束时间”找到真正的结束时间然后回应它。结果只是“DB - 服务器当前的结束时间”我如何解决这个问题?
JS
</script>
<script type="text/javascript">
var get_client_time = Math.round(new Date().getTime()/1000);
<?php $abc = "<script>document.write(get_client_time)</script>"?>
</script>
PHP代码
echo $abc . "</br>";
$show=mysql_query("SELECT * FROM `room_lists` WHERE `active` = 1");
while ($array = mysql_fetch_array($show))
{
$room_number = $array['room_number'];
$room_name = $array['room_name'];
$subject = $array['subject'];
$s_group = $array['s_group'];
$active = $array['active'];
$timeStop = $array['timeStop'];
//find real ending time
$endDay = $abc + strtotime($timeStop)-strtotime(date('Y-m-d H:i:s'));
echo $endDay;
die();
......} //blah blah blah code
答案 0 :(得分:0)
1)您可以使用TheTime.js更好地使用JavaScript中的Date对象
Doc:https://github.com/the-teacher/TheTime.js
消息来源:https://github.com/the-teacher/TheTime.js/blob/master/js/the_time.js
(new Moment).unix
例如
<script>document.write( (new Moment).unix );</script>
2)并尝试使用mysql
更改时区http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
mysql_query("SET time_zone = SOMETIMEZONE");
答案 1 :(得分:0)
可悲的是,你无法将PHP与Javascript混合在一起。 唯一可以实现的方法是使用ajax,使用一些流行的库jQuery。
第一种方法是使用客户端进入页面后提交的背景 例如:
<html><head><title>Please wait ...</title></head><body>
<form method="post" action="nextpage.php" id="continue" name="continue">
<input type="hidden" name="client_time" id="client_time" value="" />
</form>
<script type="text/javascript">
document.getElementById('client_time').value = Math.round(new Date().getTime()/1000);
document.continue.submit();
</script>
</body></html>
这样,您将在下一页上看到包含客户端时间的client_time
post变量。
2'nd方法是使用ajax并在同一页面上发送和接收数据:$.post
[编辑]两种方法都不可靠。所以你永远不会在客户端PC或浏览器上做得很好。
答案 2 :(得分:0)
我个人不相信客户的时间/日期进行这些计算。只需依赖服务器的时间/日期。至少你有一些控制权。至于客户端的倒计时,根据服务器认为的时间以及客户认为时间的长度计算增量 - 并将其用于倒计时。要实现这一点,只需在页面中有一个隐藏的输入变量。
在服务器端,我不会将时间存储为字符串。它使用MySql内置的数据类型使得数学变得更容易。
关于你想要达到的目标,我认为你的解释可以得到改善。