Javascript日期函数返回错误的日期(当前PHP时间戳已传递给它)


Javascript date function is returning wrong date (current PHP timestamp is passed to it)

我正在尝试用javascript获取当前服务器的日期时间。所以我将php日期时间戳传递给javascript日期函数,但我得到了javascript日期的一天差异。以下是我的代码:

function showRemaining() {
            <?php
             $current_date = date("m/d/y H:i:s");
             $date = strtotime($current_date) * 1000;
            ?>
            alert('<?php echo $current_date;?>'); //alerts 12/04/15 05:42:14            
            var now = new Date(<?php echo $date;?>);
            alert(now); //alerts Thu Dec 03 2015 21:42:14 GMT-0800 (Pacific Standard Time)
    }

我希望它显示今天的日期,即12月4日。

您有没有想过自己电脑中时区的差异?我在mongoDB上也遇到了同样的问题,它只是一直把时间向后设置了2个小时。

阿姆斯特丹,可节省一天的照明时间=+2小时。

只需检查你电脑上的时间设置,如果它们正常,就可以在时间上加上或减去几个小时,直到你得到正确的日期。

请注意,它们显示的时间完全相同(05:42:14 UTC=21:42:14 GMT-0800)。

根据我的快速搜索,没有什么简单的方法可以告诉JavaScript在其他时区打印日期,而不是在本地时区。

因此,根据您的用例:

  1. 如果您只想打印当前日期,那么在PHP端生成字符串,时区由您控制。

  2. 如果你想让Date对象包含正确的日期,那么它已经包含了(事实上,当你发布问题时,它是太平洋标准时间21:42)。

  3. 如果您希望JavaScript保存正确的日期,但也能够在服务器的时区中打印,您可以做的是将服务器的时区和时间一起发送给客户端,然后检测客户端的时区(var offset = new Date().getTimezoneOffset();),计算它们的差异,并将从服务器接收的日期加上那么多小时。然后只需使用一些不打印时区的日期格式(这里介绍了许多方法)。

p.S.与你的问题无关,但这是:

$current_date = date("m/d/y H:i:s");
$date = strtotime($current_date) * 1000;

可以替换为:

time() * 1000