34

2 つのタイムスタンプの差を計算する必要があります。また、文字列をタイムスタンプに変換する方法を教えてください。プレーンな JavaScript のみを使用します。JQUERY はありません。

これが私の機能です:

function clearInactiveSessions()
{
    alert("ok");
    <c:if test="${not empty pageScope.sessionView.sessionInfo}">
        var currentTime = new Date().getTime();
        alert("curr:"+currentTime);
        var difference=new Date();
        <c:forEach items="${pageScope.sessionView.sessionInfo}" var="inactiveSession">
            var lastAccessTime = ${inactiveSession.lastUpdate};
            difference.setTime(Maths.abs(currentTime.getTime()-lastAccessTime.getTime()));
            var timediff=diff.getTime();
            alert("timediff:"+timediff);
            var mins=Maths.floor(timediff/(1000*60*60*24*60));
            alert("mins:"+mins);
            if(mins<45)
                clearSession(${item.sessionID});
        </c:forEach>
    </c:if>
}
4

4 に答える 4

0

文字列が Mon May 27 11:46:15 IST 2013 の場合、ビットを解析することで日付オブジェクトに変換できます (月が 3 文字の英語の名前であると仮定し、必要に応じて調整します)。

// Convert string like Mon May 27 11:46:15 IST 2013 to date object 
function stringToDate(s) {
  s = s.split(/[\s:]+/);
  var months = {'jan':0, 'feb':1, 'mar':2, 'apr':3, 'may':4, 'jun':5, 
                'jul':6, 'aug':7, 'sep':8, 'oct':9, 'nov':10, 'dec':11};
  return new Date(s[7], months[s[1].toLowerCase()], s[2], s[3], s[4], s[5]);
}

alert(stringToDate('Mon May 27 11:46:15 IST 2013'));

同じタイムゾーンで日付文字列を使用している場合は、差の計算のためにタイムゾーンを無視できることに注意してください。タイムゾーンが異なる場合 (夏時間の違いを含む)、それらの違いを考慮する必要があります。

于 2013-05-27T12:33:59.323 に答える