定时器计数器,使用JS从客户端获取当前时间

时间:2012-08-08 10:42:22

标签: php javascript mysql

我的网站有问题。我用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

3 个答案:

答案 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内置的数据类型使得数学变得更容易。

关于你想要达到的目标,我认为你的解释可以得到改善。