2

我必须为何时更新刷新令牌做逻辑,但不知何故我没有得到正确的值。

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

结果是

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

它应该返回假。

如何使 new Date() 与字符串位于同一时区。(我假设字符串具有它需要判断当前时间是在它之前还是之后的所有信息)。

4

2 回答 2

3

如果您正在比较 Unix 时间戳,则不必担心时区(请参阅此答案了解原因)。

您正确地进行了比较-您得到的是,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
于 2013-10-16T15:52:31.200 回答
0

您可以简单地使用数据库返回的字符串创建一个新日期,并使用常用运算符进行比较:

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

JSFiddle

于 2013-10-16T15:53:28.270 回答