2016-12-02 54 views
0

我最想做什麼: *檢查節點服務器上的當前UTC時間是否在用戶本地時間之後。存儲時間與後面要參考的偏移量

在節點(Expressjs)我從Facebook獲取一些用戶數據。他們只會一直給我一個時間偏移(如-8)和一個區域設置(如en_US)

如果我天真地檢查utcTime + offset >= userTime它有時會根據夏令時關閉。

建議如何處理這個問題?

我在Postgres中存儲數據,如果這有什麼區別?它有一些時間功能。

+0

日期操作,使用http://momentjs.com/,它讓一切更容易 – xShirase

回答

0

看一看momentjs。大型圖書館在處理日期和時間時,尤其是UTC support

對於您,請將給定的時間轉換爲UTC時間,然後進行比較。

var nodeTime = moment.utc(serverValue); var facebookTime = moment.utc(facebookValue); nodeTime.isAfter(facebookTime); // => true or false

+0

這不檢測夏令時的變化。 – kjs3

+0

查看當前的js文檔。也有這樣的查詢,[isDST()](http://momentjs.com/docs/#/query/is-daylight-saving-time/)也許他們會對你的用例有用。 如果您真的擔心,只需轉換爲時間戳並比較這些毫秒。這樣,時區就不重要了。看到這個答案的細節http://stackoverflow.com/questions/26873200/momentjs-getting-javascript-date-in-utc/26890639#26890639 – clay