Skip to main content

Tedshd's Dev note

Category: TimeZone

在 JavaScript 處理各個時區對應的日期時間

# Intro 在 JavaScript 中的日期時間是個當初沒有定義出良好設計的東西 這裡先舉幾個常見的問題 日期格式問題 日期呈現的語系問題 時區問題 12 小時 24 小時問題 … 以原生的 API 在處理日期時間大多得自己額外做許多事情或是套用一些第三方 libary 來協助達成目的 # 時區問題 這次主要是討論關於時區的問題 在早期只能用 getTimezoneOffset() 的方法搭配時區表去換算各地時區 現在倒是可以使用 Intl.DateTimeFormat refer - Date.prototype.getTimezoneOffset() refer - Intl.DateTimeFormat 其實上述的問題, 在使用 Intl.DateTimeFormat 基本上都可以解決掉 詳細方式可以參以下文件 refer - Intl.DateTimeFormat() constructor 在時區中又有一個常常被忽視的的問題就是夏令時間(daylight savings time) 這個在夏季時就得把時間提前一小時的問題 如果自己處理時區就得記得處理這問題 使用 Intl.DateTimeFormat 的話系統已經自動處理了 # Intl.DateTimeFormat 這邊簡單介紹一下 Intl.DateTimeFormat 的一些用法與注意事項 new Intl.DateTimeFormat(navigator.language, { timeZone: 'America/Los_Angeles', dateStyle: 'full', timeStyle: 'full' }).format(new Date()) 這個範例就表示了當前洛杉磯的時間 第一個參數是語系, 採用 BCP 47 標準, 基本上建議使用 navigator. ...