2

I am making a website where if a user logs in, the user is given a certain logout time, where the logout time is defined and the timeleft is obtained from the logout time - server time.

I've already got the logout time and server time via PHP, but I want to display the time left dynamically thus requiring Javascript. I've tried using the following code:

function timerStart(arg1, arg2){
    var counter = setInterval(function() {getTimeLeft(arg1,arg2); }, 1000);
}

function getTimeLeft(arg_endtime, arg_currenttime){
    var endtime = new Date(arg_endtime);
    var curtime = new Date(arg_currenttime);

    var timeleft = new Date(endtime - curtime); //endtime - curtime;

    tlHours = timeleft.getHours();
    tlMinutes = timeleft.getMinutes();
    tlSeconds = timeleft.getSeconds();

    document.getElementById("timeleft").value = tlHours + ":" + tlMinutes + ":" + tlSeconds;

}

Where arg1's value is '2011:10:11 17.30.00' and arg2's value is '2011:10:11 15:55:31' as a string (yes, they are in different format). But when I tried the above codes I get NaN:NaN:NaN. I am very new to Javascript (3 days) and trying to catch up a deadline so a thorough explanation is very appreciated.

4

5 に答える 5

2

は '2011:10:11 17.30.00' であり、arg2 の値は '2011:10:11 15:55:31' に変更されます

は「2011/10/11 17:30:00」で、arg2 の値は「2011/10/11 15:55:31」です??

http://jsfiddle.net/8XF3F/7/

于 2012-09-27T10:07:26.303 に答える
1

Javascript の NaN は「非数」を意味するため、計算結果が非数になる可能性が最も高いです (JavaScript はエラーをスローせずに続行することが多いため)。endTime と curTime にブレークポイントを設定するか、console.log に記録して、実際にどのような値があるかを調べてください。

于 2012-09-27T10:06:41.110 に答える
1

私の推測では、JavaScript のDateオブジェクトは、渡された形式が好きではありません。MDN から:

文字列は、解析メソッド (IETF 準拠の RFC 1123 タイムスタンプ) によって認識される形式である必要があります。

ただし、コンストラクターは、日付を提供するさまざまな方法を受け入れるためにオーバーロードされています。私がそうしていたら、UNIX 時間を使用して 1000 を掛けてミリ秒にします。これは、PHP から抜け出すのが簡単で、PHP と JavaScript の両方で、演算を行うときにより直感的です。

于 2012-09-27T10:07:19.153 に答える
1

Date()関数の形式は非常に具体的でなければなりません。

私はここでそれをモックしました: http://jsfiddle.net/PtGxk/

日付が「/」で区切られ、時刻が「:」で区切られていることがわかるように、すべて問題ありません。

于 2012-09-27T10:09:36.723 に答える
0
document.getElementById("timeleft").value = parseInt(tlHours) + ":" + parseInt(tlMinutes) + ":" + parseInt(tlSeconds);
于 2012-09-27T10:08:21.777 に答える