2013-10-16 184 views
2

我必須做什麼時候更新刷新令牌的邏輯,並且不知何故我沒有得到正確的值。比較JavaScript日期對象

console.log(this._accessToken[".expires"]); 
console.log(Date.parse(this._accessToken[".expires"]) > new Date().getTime()); 

結果

Wed, 16 Oct 2013 15:42:53 GMT 
true 

應該返回false。

如何使新Date()與字符串在同一時區。 (我假設字符串有它需要告訴的所有信息,如果當前時間在它之前或之後)。

+2

'this._accessToken [「。expires」]'包含了什麼? – ComFreek

+3

@ComFreek「Wed,16 Oct 2013 15:42:53 GMT」,作爲第一個console.log()調用說。 –

+0

更好的問題是「*你什麼時候執行這個?*」:-)順便說一句,日誌看起來像令牌確實包含一個Date對象,而不是一個字符串。 – Bergi

回答

3

如果您比較Unix時間戳,請不要擔心時區(請參閱this answer以瞭解原因)。

你做正確的比較 - 你得到true而不是false,因爲這是正確的:

> new Date() 
Wed Oct 16 2013 11:51:29 GMT-0400 (EDT) 
> Date.parse("Wed, 16 Oct 2013") > new Date().getTime() 
false 
> Date.parse("Wed, 16 Oct 2013 00:00:00 GMT") > new Date().getTime() 
false 
> Date.parse("Wed, 16 Oct 2013 23:00:00 GMT") > new Date().getTime() 
true 
0

您可以簡單地創建一個新的日期字符串數據庫返回並使用它們進行比較通常運營商:

var expirationDate = new Date("Wed, 16 Oct 2013 15:42:53 GMT"); 
var now = new Date(); 
alert(now > expirationDate); 

JSFiddle