Node.js中sequelize時區(qū)的配置方法
基本概念
我們先來介紹一些可能當年在地理課上學習過的基本概念。
說起來,時間真是一個神奇的東西。以前人們通過觀察太陽的位置來決定時間(比如:使用日晷),這就使得不同經緯度的地區(qū)時間是不一樣的。后來人們進一步規(guī)定以子午線為中心,向東西兩側延伸,每 15 度劃分一個時區(qū),剛好是 24 個時區(qū)。然后因為一天有 24 小時,地球自轉一圈是 360 度,360 度 / 24 小時 = 15 度/小時,所以每差一個時區(qū),時間就差一個小時。
最開始的標準時間(子午線中心處的時間)是英國倫敦的皇家格林威治天文臺的標準時間(因為它剛好在本初子午線經過的地方),這就是我們常說的 GMT(Greenwich Mean Time)。然后其他各個時區(qū)根據標準時間確定自己的時間,往東的時區(qū)時間晚(表示為 GMT+hh:mm)、往西的時區(qū)時間早(表示為 GMT-hh:mm)。比如,中國標準時間是東八區(qū),我們的時間就總是比 GMT 時間晚 8 小時,他們在凌晨 1 點,我們已經是早晨 9 點了。
但是 GMT 其實是根據地球自轉、公轉計算的(太陽每天經過英國倫敦皇家格林威治天文臺的時間為中午 12 點),不是非常準確,于是后面提出了根據原子鐘計算的標準時間 UTC(Coordinated Universal Time)。
一般情況下,GMT 和 UTC 可以互換,但是實際上,GMT 是一個時區(qū),而 UTC 是一個時間標準。
下面開始本文的正文:
Node.js sequelize時區(qū)配置
sequelize 默認情況下,保存日期時會轉換成 +00:00時區(qū),例如
提交數據:
time=2017-07-17 16:52:12
數據庫中會保存成
2017-07-17 08:52:12
解決方式:
sequelize時配置時區(qū)
timezone: '+08:00'
如:
const sequelize = new Sequelize(config.database, config.username, config.password, { host: config.host, port: config.port, dialect: 'mysql', pool: { max: 5, min: 0, idle: 10000 }, timezone: '+08:00' });
PS:鏈接的所有數據庫(讀和寫)都要設置合適的時區(qū),否則會出現時間寫入不一致的情況
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。