2013-05-27 126 views
0

我的問題如下: 我想在我的網站上顯示尼泊爾標準時間,所以我使用命令php_value date將我的 網站的默認時區設置爲'Asia/kathmandu'。時區'亞洲/加德滿都'在htaccess文件中。javascript function new Date()not working

當我使用類似的strftime任何PHP函數()或日期()顯示時間,它顯示了尼泊爾標準時間, 但是當我使用JavaScript函數新的日期(<?php echo time()*1000; ?>),它顯示 我個人PC的時間我正在使用查看我的網站。 如何使用JavaScript日期函數顯示正確的時間?有人可以幫我嗎?

+0

的JavaScript將始終顯示您的系統日期。如果你需要服務器時間,那麼你需要從服務器獲取日期或時間。 –

+0

http://stackoverflow.com/questions/439630/how-do-you-create-a-javascript-date-object-with-a-set-timezone-without-using-as – akonsu

+0

@ HarryBomrah-javascript日期使用UTC時間值,默認情況下,該時間值基於時區偏移和系統當前時間的系統設置組合。 – RobG

回答

0

使用

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

呼叫通過AJAX從您的服務器的時間。這具有更好的代碼維護的優點。如果您再次更改時間(例如,如果您想將代碼用於其他位置),則只需在.haccess中更改時間。

1

你的問題是因爲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