簡體   English   中英

Javascript日期比較並非始終有效

[英]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()nowlastVisit三十秒轉換為毫秒,這樣將它們比較為無符號整數會更容易:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM