Compute elapsed time
本问题已经有最佳答案,请猛点这里访问。
我正在寻找一些JavaScript简单的样本来计算经过的时间。 我的方案是,对于JavaScript代码中的特定执行点,我想记录一个开始时间。 在JavaScript代码的另一个特定执行点,我想记录一个结束时间。
然后,我想以以下形式计算经过的时间:结束时间和开始时间之间经过了多少天,小时,分钟和秒,例如:
任何参考简单样品?:-)
提前致谢,
乔治
试试这样的事(FIDDLE)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // record start time var startTime = new Date(); ... // later record end time var endTime = new Date(); // time difference in ms var timeDiff = endTime - startTime; // strip the ms timeDiff /= 1000; // get seconds (Original had 'round' which incorrectly counts 0:28, 0:29, 1:30 ... 1:59, 1:0) var seconds = Math.round(timeDiff % 60); // remove seconds from the date timeDiff = Math.floor(timeDiff / 60); // get minutes var minutes = Math.round(timeDiff % 60); // remove minutes from the date timeDiff = Math.floor(timeDiff / 60); // get hours var hours = Math.round(timeDiff % 24); // remove hours from the date timeDiff = Math.floor(timeDiff / 24); // the rest of timeDiff is number of days var days = timeDiff ; |
试试这个...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | function Test() { var s1 = new StopWatch(); s1.Start(); // Do something. s1.Stop(); alert( s1.ElapsedMilliseconds ); } // Create a stopwatch"class." StopWatch = function() { this.StartMilliseconds = 0; this.ElapsedMilliseconds = 0; } StopWatch.prototype.Start = function() { this.StartMilliseconds = new Date().getTime(); } StopWatch.prototype.Stop = function() { this.ElapsedMilliseconds = new Date().getTime() - this.StartMilliseconds; } |
希望这会有所帮助:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <!doctype html public"-//w3c//dtd html 3.2//en"> <html> <head> compute elapsed time in JavaScript <script type="text/javascript"> function display_c (start) { window.start = parseFloat(start); var end = 0 // change this to stop the counter at a higher value var refresh = 1000; // Refresh rate in milli seconds if( window.start >= end ) { mytime = setTimeout( 'display_ct()',refresh ) } else { alert("Time Over"); } } function display_ct () { // Calculate the number of days left var days = Math.floor(window.start / 86400); // After deducting the days calculate the number of hours left var hours = Math.floor((window.start - (days * 86400 ))/3600) // After days and hours , how many minutes are left var minutes = Math.floor((window.start - (days * 86400 ) - (hours *3600 ))/60) // Finally how many seconds left after removing days, hours and minutes. var secs = Math.floor((window.start - (days * 86400 ) - (hours *3600 ) - (minutes*60))) var x = window.start +"(" + days +" Days" + hours +" Hours" + minutes +" Minutes and" + secs +" Secondes" +")"; document.getElementById('ct').innerHTML = x; window.start = window.start - 1; tt = display_c(window.start); } function stop() { clearTimeout(mytime); } </head> <body> <input type="button" value="Start Timer" onclick="display_c(86501);"/> | <input type="button" value="End Timer" onclick="stop();"/> <span id='ct' style="background-color: #FFFF00"></span> </body> </html> |
我想到的是像"秒表"这样的东西:
用法:
1 2 3 4 5 6 7 | var st = new Stopwatch(); st.start(); //Start the stopwatch // As a test, I use the setTimeout function to delay st.stop(); setTimeout(function (){ st.stop(); // Stop it 5 seconds later... alert(st.getSeconds()); }, 5000); |
执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | function Stopwatch(){ var startTime, endTime, instance = this; this.start = function (){ startTime = new Date(); }; this.stop = function (){ endTime = new Date(); } this.clear = function (){ startTime = null; endTime = null; } this.getSeconds = function(){ if (!endTime){ return 0; } return Math.round((endTime.getTime() - startTime.getTime()) / 1000); } this.getMinutes = function(){ return instance.getSeconds() / 60; } this.getHours = function(){ return instance.getSeconds() / 60 / 60; } this.getDays = function(){ return instance.getHours() / 24; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | var StopWatch = function (performance) { this.startTime = 0; this.stopTime = 0; this.running = false; this.performance = performance === false ? false : !!window.performance; }; StopWatch.prototype.currentTime = function () { return this.performance ? window.performance.now() : new Date().getTime(); }; StopWatch.prototype.start = function () { this.startTime = this.currentTime(); this.running = true; }; StopWatch.prototype.stop = function () { this.stopTime = this.currentTime(); this.running = false; }; StopWatch.prototype.getElapsedMilliseconds = function () { if (this.running) { this.stopTime = this.currentTime(); } return this.stopTime - this.startTime; }; StopWatch.prototype.getElapsedSeconds = function () { return this.getElapsedMilliseconds() / 1000; }; StopWatch.prototype.printElapsed = function (name) { var currentName = name || 'Elapsed:'; console.log(currentName, '[' + this.getElapsedMilliseconds() + 'ms]', '[' + this.getElapsedSeconds() + 's]'); }; |
基准
1 2 3 4 5 6 7 8 9 10 | var stopwatch = new StopWatch(); stopwatch.start(); for (var index = 0; index < 100; index++) { stopwatch.printElapsed('Instance[' + index + ']'); } stopwatch.stop(); stopwatch.printElapsed(); |
产量
1 2 3 4 5 6 | Instance[0] [0ms] [0s] Instance[1] [2.999999967869371ms] [0.002999999967869371s] Instance[2] [2.999999967869371ms] [0.002999999967869371s] /* ... */ Instance[99] [10.999999998603016ms] [0.010999999998603016s] Elapsed: [10.999999998603016ms] [0.010999999998603016s] |
performance.now()是可选的 - 只需将false传递给StopWatch构造函数。
这就是我正在使用的:
相当于格式时间字符串的毫秒数:
1 2 3 4 5 6 7 8 9 10 | function ms2Time(ms) { var secs = ms / 1000; ms = Math.floor(ms % 1000); var minutes = secs / 60; secs = Math.floor(secs % 60); var hours = minutes / 60; minutes = Math.floor(minutes % 60); hours = Math.floor(hours % 24); return hours +":" + minutes +":" + secs +"." + ms; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <script type="text/javascript"> <!-- Gracefully hide from old browsers // Javascript to compute elapsed time between"Start" and"Finish" button clicks function timestamp_class(this_current_time, this_start_time, this_end_time, this_time_difference) { this.this_current_time = this_current_time; this.this_start_time = this_start_time; this.this_end_time = this_end_time; this.this_time_difference = this_time_difference; this.GetCurrentTime = GetCurrentTime; this.StartTiming = StartTiming; this.EndTiming = EndTiming; } //Get current time from date timestamp function GetCurrentTime() { var my_current_timestamp; my_current_timestamp = new Date(); //stamp current date & time return my_current_timestamp.getTime(); } //Stamp current time as start time and reset display textbox function StartTiming() { this.this_start_time = GetCurrentTime(); //stamp current time document.TimeDisplayForm.TimeDisplayBox.value = 0; //init textbox display to zero } //Stamp current time as stop time, compute elapsed time difference and display in textbox function EndTiming() { this.this_end_time = GetCurrentTime(); //stamp current time this.this_time_difference = (this.this_end_time - this.this_start_time) / 1000; //compute elapsed time document.TimeDisplayForm.TimeDisplayBox.value = this.this_time_difference; //set elapsed time in display box } var time_object = new timestamp_class(0, 0, 0, 0); //create new time object and initialize it //--> <form> <input type="button" value="Start" onClick="time_object.StartTiming()"; name="StartButton"> </form> <form> <input type="button" value="Finish" onClick="time_object.EndTiming()"; name="EndButton"> </form> <form name="TimeDisplayForm"> Elapsed time: <input type="text" name="TimeDisplayBox" size="6"> seconds </form> |
首先,您可以随时获取当前时间
1 | var currentTime = new Date(); |
然后你可以在http://www.zachleat.com/Lib/jquery/humane.js查看这个"漂亮的日期"示例。
如果这不适合你,只需谷歌"javascript漂亮日期",你会发现几十个示例脚本。
祝好运。
编写java程序,以秒为单位输入任何循环事件的经过时间&amp; EX的输出格式应为(小时:分钟:秒):4150秒的经过时间= 1:09:10