我目前正在研究系統必須在他們的時區自動呼叫客戶的方法。
假設如果客戶在“非洲/布蘭太爾”時區,而我在“亞洲/雅加達”時區,客戶說要在晚上 7 點打電話,那么我需要將時間存盤在資料庫中,系統必須呼叫他。
我認為的方法是在兩個時區(“Africa/Blantyre”和“Asia/Jakarta”)之間獲得偏移量,然后在“Asia/Jakarta”獲得晚上 7 點,最后將偏移量添加/減去時間,即我將如何獲得“非洲/布蘭太爾”的晚上 7 點時間。但我不確定如何實作這一點?
uj5u.com熱心網友回復:
你可以:
- 現在創造一個時刻
- 將時區設定為非洲/布蘭太爾
- 將時間設定為所需的布蘭太爾當地時間
- 將時區設定為亞洲/雅加達
- 顯示雅加達時間
在內部,moment 物件使用內置 Date 物件的一個??實體,該物件具有一個 ECMAScript 時間值,該值表示單個時刻,作為與 ECMAScript 紀元(1970 年 1 月 1 日)的偏移量。更改時區只會更改操作和顯示日期的計算,不會更改時間值。
因此,在將時區設定為非洲/布蘭太爾后,將時間設定為 19:00 會將其設定為布蘭太爾的 19:00。將時區更改為 Jakarta 也不會更改基礎時間值,它只是意味著生成的時間戳是針對 Jakarta 的。
所以這里有一些代碼:
// First get a moment for "now"
let mBlantyre = moment();
// Set the timezone to Africa/Blantyre
mBlantyre.tz('Africa/Blantyre');
// Set the time to 7 pm
mBlantyre.startOf('day').hour(19);
// Copy the moment object
mJakarta = moment(mBlantyre);
// Set the timezone to Asia/Jakarta
mJakarta.tz('Asia/Jakarta');
// Display as timestamps
console.log(
'Africa/Blantyre: ' mBlantyre.format()
'\nAsia/Jakarta : ' mJakarta.format()
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data-10-year-range.min.js"></script>
uj5u.com熱心網友回復:
我認為您可以通過此站點獲取時差資料。至于方法,您可以制作一個json檔案,通過該檔案添加所有國家及其時間,或者通過api,您可以通過其中一個計算時差和計算時區的站點找到它
https://www.calculator.net/time-zone-calculator.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/465425.html
標籤:javascript 日期 时刻时区
