【问题标题】:javascript function new Date() not workingjavascript函数新日期()不起作用
【发布时间】:2013-05-27 13:22:38
【问题描述】:

我的问题如下: 我想在我的网站上显示尼泊尔标准时间,所以我设置了我的默认时区 网站到“亚洲/加德满都”使用命令:php_value date.timezone '亚洲/加德满都'在 htaccess 文件中。

当我使用 strftime() 或 date() 等任何 php 函数显示时间时,它会显示尼泊尔标准时间, 但是当我使用 javascript 函数 new Date(<?php echo time()*1000; ?>) 时,它会显示 我用来查看我的网站的个人电脑的时间。 如何使用 javascript 日期函数显示正确的时间?谁能帮帮我?

【问题讨论】:

  • Javascript 将始终显示您的系统日期。如果需要服务器时间,则需要从服务器获取日期或时间。
  • @HarryBomrah—javascript 日期使用 UTC 时间值,默认情况下,该值基于时区偏移的系统设置和系统当前时间的组合。

标签: php javascript


【解决方案1】:

您的问题是因为 javascript(实际上是 ECMAScript)日期对象基于 UTC time value。当你这样做时:

new Date(<?php echo time()*1000; ?>)

您将 UTC 毫秒时间值传递给 Date 构造函数,然后它会创建一个日期对象。当您使用通常的 Date 方法来格式化字符串,或者使用 Date.prototpye.toString 或 Date.prototype.toLocaleString 时,您将获得一个基于客户端语言环境的字符串。请注意,所有这些字符串都依赖于实现,并且因 locale 版本而异。

如果你想要服务器的时区,那么使用服务器来设置它。或者,您可以发送以分钟为单位的时区偏移量,以应用于本地时间,以返回尼泊尔标准时间 (UTC + 5:45)。请注意,在 ECMAScript 中,时区偏移量是要添加到本地时间以获取 UTC 的分钟数,而定义偏移量以分钟为单位添加到 UTC 以获取本地时间更为正常。

所以要获得 NST:

function toNST(timeValue) {

    function z(n) {return (n<10? '0' : '') + n}
    var d = new Date();
    var nstOffset = 5 * 60 + 45;
    d.setMinutes(d.getMinutes() + d.getTimezoneOffset() + nstOffset);

    return z(d.getHours()) + ':' + z(d.getMinutes()) + ':' + z(d.getSeconds());
}

alert(toNST(+(new Date())));  // about 11:07:17 at the moment

【讨论】:

    【解决方案2】:

    使用

    new Date(Date.NPT(year, month, day, hour, minute, second))
    

    【讨论】:

      【解决方案3】:

      通过 ajax 从您的服务器调用时间。这具有更好的代码维护的优势。如果您再次更改时间(例如,如果您想将代码用于另一个位置),您只需更改 .haccess 中的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多