幾個概念
- UTC時間為標(biāo)準(zhǔn)時間, GMT時間比UTC時間有更多誤差筐钟。
- 北京時間比UTC時間快8個小時。
數(shù)據(jù)庫時間(Postgres)
數(shù)據(jù)庫可以儲存有時區(qū)的時間(timestamp with timezone)和無時區(qū)的時間(timestamp without timezone), 多數(shù)情況下使用后者旦委。
若create
或update
給的時間參數(shù)有時區(qū)表示, 則數(shù)據(jù)庫會依據(jù)定義的數(shù)據(jù)類型自動轉(zhuǎn)化時區(qū), 若沒給出時區(qū), 則默認(rèn)視為標(biāo)準(zhǔn)時間析恋。
- 參數(shù)無時區(qū), 數(shù)據(jù)庫有時區(qū)
- 參數(shù):
2017-02-12 16:00:00
- 存入后:
2017-02-12 16:00:00+00
- 參數(shù):
- 參數(shù)有時區(qū), 數(shù)據(jù)庫有時區(qū)
- 參數(shù):
2017-02-12 16:00:00+08
- 存入后:
2017-02-12 16:00:00+08
- 參數(shù):
- 參數(shù)無時區(qū), 數(shù)據(jù)庫無時區(qū)
- 參數(shù):
2017-02-12 16:00:00
- 存入后:
2017-02-12 16:00:00
- 參數(shù):
- 參數(shù)有時區(qū), 數(shù)據(jù)庫有時區(qū)
- 參數(shù):
2017-02-12 16:00:00+08
- 存入后:
2017-02-13 00:00:00+00
- 參數(shù):
JavaScript的基本轉(zhuǎn)化方式
JavaScript的new Date()
函數(shù)生成的是本地時間篷角。
JavaScript | Result |
---|---|
new Date |
Mon Feb 13 2017 00:00:00 GMT+0800 (CST) |
toDateString |
Mon Feb 13 2017 |
toGMTString |
Sun, 12 Feb 2017 16:00:00 GMT |
toISOString |
2017-02-12T16:00:00.000Z |
toJSON |
2017-02-12T16:00:00.000Z |
toLocaleDateString |
2/13/2017 |
toLocaleTimeString |
12:00:00 AM |
toLocaleString |
2/13/2017, 12:00:00 AM |
toString |
Mon Feb 13 2017 00:00:00 GMT+0800 (CST) |
toTimeString |
00:00:00 GMT+0800 (CST) |
toUTCString |
Sun, 12 Feb 2017 16:00:00 GMT |
UTC時間轉(zhuǎn)本地時間
var toLocal = function(date) {
// 確保date 最終為Date object
date = new Date(date);
var local = date.toLocaleString('en-US', {
hour12: false,
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
return local;
};
- 通過
toLocaleString()
方法轉(zhuǎn)化時區(qū), 可以自定義顯示樣式画机。
本地時間轉(zhuǎn)UTC時間
總體轉(zhuǎn)化
var toUTC = function(date) {
// 確保date 最終為Date object
date = new Date(date);
// 加入"+08"來標(biāo)示對應(yīng)的時區(qū)
var utc = date.toISOString().replace(/Z/, "+00");
return utc;
};
提取日期數(shù)據(jù)
- 獲取年 :
var y = date.getUTCFullYear();
- 獲取月 :
var m = date.getUTCMonth() ;
- 獲取日 :
var d = date.getUTCDate();
- 獲取小時:
var h = date.getUTCHours();
- 獲取分鐘:
var M = date.getUTCMinutes();
- 獲取秒鐘:
var s = date.getUTCSeconds();