在 javascript 中,時間是非常神奇的東西呢! 剛好遇到時區的相關問題,就來記錄一下
- GMT (格林威治標準時間, 格林威治平時, Greenwich Mean Time)
- UTC (協調世界時 Universal Time Coordinated)
- 一般情況下,GMT 和 UTC 可以互換,但是實際上,GMT 是一個時區,而 UTC 是一個時間標準
在 js
使用 -
會被 Chrome 解析為格林威治標準時間(GMT)的日期,所以像台灣的「本地時間」是 GMT+8 因此顯示時間會自動加上八小時來顯示。
若使用 /
則會是顯示「本地時間」
當想用 「本地時間」 時,請記得要改用 /
1 2 3 4 5 6 7 |
|
如果拿到的 date 是 2019-08-14T00:00:00.000Z
,則可以透過轉換,來達成不被時區影響
1 2 3 |
|
在 ECMAScript® Language Specification Date Time String Format 有定義一套標準格式,基於 ISO 8601
1 2 |
|
也可以只有日期 (但就是會跟著時區跑)
1 2 3 |
|
結論就是需要跟著時區用 -
,不需要則用 /
Reference
- 所有的時區
- 到底是 GMT+8 還是 UTC+8 ? - PanSci 泛科學
- javascript - Why does Date.parse give incorrect results? - Stack Overflow
- Parse date without timezone javascript - Stack Overflow
- ECMAScript Language Specification - ECMA-262 Edition 5.1
- 前端工程研究:關於 JavaScript 中 Date 型別的常見地雷與建議作法 | The Will Will Web
- 關於“時間”的一次探索 關於js時區iso,utc等完美解答