0

我的网站有问题。我用 php 代码和 JS 创建了一个倒数计时器。

我的问题是当我回显我的变量 abc 时。没关系(回显正确的时间戳)但是当我通过使用“数据库的结束时间 - 服务器当前时间 + 客户端时间”找到真正的结束时间时,然后回显它。结果只是“数据库的结束时间-服务器当前时间”我该如何解决这个问题?

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
4

3 回答 3

0

1) 您可以使用 TheTime.js 更好地处理 JavaScript 中的 Date 对象

文档: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");
于 2012-08-08T10:51:55.877 回答
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 变量。

第二种方法是使用 ajax 并在同一页面上发送和接收数据:$.post

[编辑] 两种方法都不可靠。因此,基于客户端 PC 或浏览器,您永远无法完成出色的工作。

于 2012-08-08T10:52:25.687 回答
0

就我个人而言,我不会相信客户的时间/日期来进行这些计算。只需依靠服务器的时间/日期。至少你对此有一定的控制权。至于客户端上的倒计时,请根据服务器认为的时间和客户端认为的时间计算增量 - 并将其仅用于倒计时。要实现这一点,只需在页面中隐藏一个输入变量。

在服务器端,我不会将时间存储为字符串。使用内置数据类型的 MySql 使数学变得更容易。

至于您要达到的目标,我认为您的解释可以改进。

于 2012-08-08T10:55:46.270 回答