[英]Javascript date comparison not always working
我的應用程序依靠日期比較來使用戶“脫機”
這是我的代碼:
setInterval(function () {
for (var s in _client) {
if (_client.hasOwnProperty(s)) {
var obj = _client[s];
var lastVisit = new Date(_client[s].lastActive); // for example: 2013-10-8 9:52:24
var thirtySecs = 31000;
var now = new Date();
var thirtySecsAgo = new Date(now - thirtySecs);
if (lastVisit < thirtySecsAgo) {
// Should now remove user
// This does not always work for some reason
}
}
}
}, 15000)
邏輯是,它應該檢查每個活動客戶端的lastActive屬性(正在由心跳更新)。 但是有時if
不會觸發,因此不會刪除用戶。
我無法找到為什么有時即使超過30分鍾也無法刪除用戶。
任何想法可能有什么問題,以及如何確保始終刪除舊用戶?
有時,自動轉換會發生奇怪的事情。 嘗試將顯式轉換為時間戳值並使用它們。
var d = new Date();
var ts = d.valueOf();
// execute operations
我建議通過getTime()將now , lastVisit和三十秒轉換為毫秒,這樣將它們比較為無符號整數會更容易:
var lastVisit = (new Date(_client[s].lastActive)).getTime(); //1381215144000
var now = (new Date()).getTime(); //1381225150208
var thirtySecs = 31*1000; //31000
var thirtySecsAgo = now - thirtySecs; //1381225119208
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.