计算所用时间

我正在寻找一些简单的JavaScript样本来计算经过的时间。 我的情况是,对于JavaScript代码中的特定执行点,我想logging一个开始时间。 而在JavaScript代码执行的另一个特定点,我想logging一个结束时间。

然后,我想要计算经过的时间,forms为:结束时间和开始时间之间经过了多less天,小时,分钟和秒,例如: 0 Days, 2 Hours, 3 Minutes and 10 Seconds are elapsed

任何参考简单样本? 🙂

提前致谢,

乔治

希望这将有助于:

 <!doctype html public "-//w3c//dtd html 3.2//en"> <html> <head> <title>compute elapsed time in JavaScript</title> <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); } </script> </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> 

试试像这样( FIDDLE )

 // 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 ; 

尝试这个…

 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; } 

我想起了一个像“秒表”的东西:

用法:

 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); 

执行:

 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; } } 

这是我正在使用的:

毫秒到相当格式的时间string:

 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; } 
 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]'); }; 

基准

 var stopwatch = new StopWatch(); stopwatch.start(); for (var index = 0; index < 100; index++) { stopwatch.printElapsed('Instance[' + index + ']'); } stopwatch.stop(); stopwatch.printElapsed(); 

产量

 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的构造函数即可。

首先,你总是可以抓住当前的时间

 var currentTime = new Date(); 

然后你可以在http://www.zachleat.com/Lib/jquery/humane.js上看看这个“漂亮的date”例子;

如果这不适合你,只是谷歌“JavaScript漂亮的date”,你会发现几十个示例脚本。

祝你好运。

 <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 //--> </script> <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> 

编写java程序,input任何循环事件的经过时间(以秒为单位),输出格式应该类似于(小时:分钟:秒)EX:经过的时间在4150秒= 1:09:10