admin管理员组文章数量:1279144
I have an application that requires the elapsed minutes between two times. Eg: 9:00 to 10:00 is sixty minutes. This is the solution that I worked out, but it seems excessively verbose. Can I do better?
EDIT: I receive strings in the format of YYYYMMDD and HHMM or HMM from a remote system.
// define a start time and end time as string
var start_time ="830";
var end_time ="1930";
// make sure we have plete 4 digit time
start_time = ('0' + start_time).slice(-4);
end_time = ('0' + end_time).slice(-4);
// extract start minutes and seconds
start_hour = start_time.substring(0,2);
start_minute = start_time.substring(2,4);
// extract end minutes and seconds
end_hour = end_time.substring(0,2);
end_minute = end_time.substring(2,4);
//get current date - it seems that we need a date a valid date to create a Date object
var now = new Date();
var year = now.getUTCFullYear();
var month = now.getUTCMonth();
var day = now.getDate();
// create Date object
var start_date_time_object = new Date(year,month,day,start_hour,start_minute);
var end_date_time_object = new Date(year,month,day,end_hour,end_minute);
// get number of minutes between start and end times
var start_minutes = (start_date_time_object.getHours() * 60) + start_date_time_object.getMinutes();
var end_minutes = (end_date_time_object.getHours() * 60) + end_date_time_object.getMinutes();
// calculate net time elapsed
var duration = end_minutes - start_minutes;
// display
console.log(start_minutes);
console.log(end_minutes);
console.log(duration);
I have an application that requires the elapsed minutes between two times. Eg: 9:00 to 10:00 is sixty minutes. This is the solution that I worked out, but it seems excessively verbose. Can I do better?
EDIT: I receive strings in the format of YYYYMMDD and HHMM or HMM from a remote system.
// define a start time and end time as string
var start_time ="830";
var end_time ="1930";
// make sure we have plete 4 digit time
start_time = ('0' + start_time).slice(-4);
end_time = ('0' + end_time).slice(-4);
// extract start minutes and seconds
start_hour = start_time.substring(0,2);
start_minute = start_time.substring(2,4);
// extract end minutes and seconds
end_hour = end_time.substring(0,2);
end_minute = end_time.substring(2,4);
//get current date - it seems that we need a date a valid date to create a Date object
var now = new Date();
var year = now.getUTCFullYear();
var month = now.getUTCMonth();
var day = now.getDate();
// create Date object
var start_date_time_object = new Date(year,month,day,start_hour,start_minute);
var end_date_time_object = new Date(year,month,day,end_hour,end_minute);
// get number of minutes between start and end times
var start_minutes = (start_date_time_object.getHours() * 60) + start_date_time_object.getMinutes();
var end_minutes = (end_date_time_object.getHours() * 60) + end_date_time_object.getMinutes();
// calculate net time elapsed
var duration = end_minutes - start_minutes;
// display
console.log(start_minutes);
console.log(end_minutes);
console.log(duration);
Share
Improve this question
edited May 20, 2013 at 13:28
Abe
asked May 20, 2013 at 13:05
AbeAbe
2984 silver badges14 bronze badges
2 Answers
Reset to default 6DEMO
Just remove what you don't want to see from the return. Now you can simply pass date objects in, you don't have to bother with conversions.
var cc = new Date("9/13/2012 12:00 AM");
var c = new Date();
function timeDifference(d, dd) {
var minute = 60 * 1000,
hour = minute * 60,
day = hour * 24,
month = day * 30,
ms = Math.abs(d - dd);
var months = parseInt(ms / month, 10);
ms -= months * month;
var days = parseInt(ms / day, 10);
ms -= days * day;
var hours = parseInt(ms / hour, 10);
ms -= hours * hour;
var minutes = parseInt(ms / minute, 10);
return [
months + " months",
days + " days",
hours + " hours",
minutes + " minutes"
].join(", ");
};
document.body.innerHTML += timeDifference(cc, c) + "<br />";
var start_time ="830";
var end_time ="1930";
var start_hour = start_time.slice(0, -2);
var start_minutes = start_time.slice(-2);
var end_hour = end_time.slice(0, -2);
var end_minutes = end_time.slice(-2);
var startDate = new Date(0,0,0,start_hour, start_minutes);
var endDate = new Date(0,0,0,end_hour, end_minutes);
var millis = endDate - startDate;
var minutes = millis/1000/60;
alert(minutes);
--output:--
660
本文标签: datetimejavascriptelapsed minutes between two timesStack Overflow
版权声明:本文标题:datetime - javascript - elapsed minutes between two times - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741293360a2370675.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论