0

我的问题如下:我想在我的网站上显示尼泊尔标准时间,所以我在 htaccess 文件中使用命令:php_value date.timezone 'Asia/kathmandu' 将我的网站的默认时区设置为'Asia/kathmandu'。

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

4

3 回答 3

2

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

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

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

如果您想要服务器的时区,请使用服务器进行设置。或者,您可以发送以分钟为单位的时区偏移量,以应用于本地时间,以返回尼泊尔标准时间 (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
于 2013-05-27T05:22:38.963 回答
0

利用

new Date(Date.NPT(year, month, day, hour, minute, second))
于 2013-05-27T04:55:34.750 回答
0

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

于 2013-05-27T04:58:51.233 回答