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

时间:2015-12-04 05:44:56

标签: javascript php date

我正在尝试在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日。

2 个答案:

答案 0 :(得分:0)

您是否考虑过自己电脑中时区的差异?我和mongoDB有同样的问题,它只是将时间设置为2小时。

阿姆斯特丹的日光照明= + 2小时。

只需在您的电脑上检查您的时间设置,如果它们没问题,请在您获得正确日期之前的几个小时内添加或减去。

答案 1 :(得分:0)

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

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

因此,根据您的使用情况:

  1. 如果您只想打印当前日期,请在PHP端生成字符串,时区在您的控制之下。

  2. 如果您希望Date对象包含正确的日期,那么它已经存在(当您发布问题时,实际上是太平洋标准时间21:42)。

  3. 如果您希望JavaScript保持正确的日期,但也能够在您的服务器时区中打印它,您可以做的是将服务器的时区与时间一起发送给客户端,然后检测客户端的时区(var offset = new Date().getTimezoneOffset();),计算它们的差异,并将这几个小时添加到从服务器收到的日期。然后只使用一些不打印时区的日期格式(描述here的许多方法。)

  4. P.S。与你的问题无关,但是这个:

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

    可以替换为:

    time() * 1000