你的問題是因爲JavaScript(實際上是ECMAScript)日期對象基於UTC time value。當您這樣做時:
new Date(<?php echo time()*1000; ?>)
您正在向UTC構造函數傳遞一個UTC毫秒時間值,然後創建一個日期對象。當您使用通常的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
的JavaScript將始終顯示您的系統日期。如果你需要服務器時間,那麼你需要從服務器獲取日期或時間。 –
http://stackoverflow.com/questions/439630/how-do-you-create-a-javascript-date-object-with-a-set-timezone-without-using-as – akonsu
@ HarryBomrah-javascript日期使用UTC時間值,默認情況下,該時間值基於時區偏移和系統當前時間的系統設置組合。 – RobG