近期實務上遇見需要處理時區和 UTC 時間之類的轉換問題。前端畫面上呈現的是根據使用者的系統時間所推斷,之後傳送到後端伺服器要轉換成 UTC。另外,從伺服器端取得的資料時間,也需要轉成客戶端時間才行。
程式碼
將客戶端時間轉換成 UTC
1. 先取得客戶端時間和 UTC 間的 offset,dayjs 會提供的數值已經替你解決了夏令時間問題。這一個 offset 單位為分鐘 ( min )
2. 將時間帶入 dayjs ,並經由 utc 套件轉換
將 UTC 時間轉換成客戶端時間
1. 承接上一個區塊,因為你已經取得了客戶端時間和 utc 間的 offset,所以將取得的時間透過 dayjs 所提供的 add 方法修正即可
1 2 3 4 5 6 7 8 9 |
const startTime = '2021-01-01T08:00:00' // 1. 取得 local time 與 utc 之間的 offset const timezoneOffset = dayjs().utcOffset() // 以 Taipei 時間來說,此值會為 480 // 2. dayjs - local time to utc time dayjs(startTime).utc().format('YYYY-MM-DDTHH:mm:ss') // 3. dayjs - utc to local time dayjs(yourTimeFromAPI).add(timezoneOffset, 'minute') |
參考資料
1. Javascript 時區(timezone) & 夏令時間(Daylight Saving Time)
按讚加入粉絲團