JavaScript中日期的操作具有時區變化,客戶機在該時區變化。
正確的機會不得不修復顯示日期之間的差異,因爲沒有人知道的功能。當您舉行日期時,回報她顯示爲:「Thu Feb 14 2008 08:41:27 GMT-0300(巴西的官方小時)」 請注意,在日期中具有GMT(格林尼治標準時間),表示在哪個時間區域的日期已配置。
我會盡量避免在日期操作中造成的時間差異。爲此,我們創建了一個函數,將日期始終轉換爲等待的時區。
var calculateTimeZone = function(date, offset) {
var miliseconds_with_utc = date.getTime() + (date.getTimezoneOffset() * 60000);
return new Date(miliseconds_with_utc + (3600000 * offset));
}
注意的是,在第3行,我們調用方法的getTime()在該日期的地方瞬間轉換爲通過自1970年1月1日(Unix紀元)毫秒爲代表的一批。我們通過JavaScript中的日期方法geTimezoneOffset()獲取當前時區,並在瀏覽器中設置當前時區,並乘以一個小時的毫秒數。我們再添加這兩個值。
爲什麼一個小時?
爲什麼這是表示每個時區的時間。默認情況下,此方法在幾分鐘內返回此時區,此時需要小時轉換。 爲了到達這個號碼60000你有記得1秒有1000毫秒和1分鐘有60秒,然後轉換分鐘,我們乘60 * 1000 = 60000
這個時刻,我們有UTC(協調毫秒世界時間)由變量「utc」以當地時間的總和表示,以毫秒爲單位的時區。 現在我們需要得到一個日期,開始這個UTC加上命運的時區,例如在巴西時區(巴西小時)的時區+5變換中如何表示日期。
請注意,在第5行中,我們得到了小時的偏移量(時區表示)並轉換爲毫秒。請記住,這裏1秒有1000毫秒和其中1個小時有3600秒,然後將其轉換以毫秒爲單位小時應乘以1000 * 3600 = 3600000
我們加入這個結果與變量「UTC」的值,我們得到了瞬間到想要的時區。因此,我們創建一個新的日期與長期合適的基礎上,並返回這個新的日期。
通過這種方式,當我們需要在正確的時區表示日期時,我們可以保持應用程序所需的完整性。
該值表示某個時刻 - 如果你想在一個特定的時區顯示的日期可能很容易成爲週一在德國和(同時)週日在巴西... –
,只是做轉換客戶端上-側。我推薦使用時區轉換的簡單易用的moment.js。 – Ageonix
這是一個[時代](https://en.wikipedia。org/wiki/Unix_time)的值?如果是這樣,那裏就沒有時區,那只是絕對的時間。您有責任將其投入任何您需要手動操作的當地時間。例如,使用[moment.js](http://momentjs.com/timezone/docs/)。 – tadman