您的问题是因为 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