如何计算平均时间 [英] How to calculate average time
本文介绍了如何计算平均时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何计算的平均时间下午11点59分00秒和上午12:00:00,以便它可以是下午11时59分三十〇秒。目前这款code是给我上午11点59分三十○秒
VAR convertTimeToMilliSecondsTest =功能(时间){
VAR的startDate =1970/01/01;
如果(time.indexOf(AM)!= - 1){
NEWTIME = time.replace(AM,AM);
}否则如果(time.indexOf(PM)!= - 1){
NEWTIME = time.replace(PM,PM);
}
VAR dateString =的startDate ++ NEWTIME;
VAR日期=新的日期(dateString.replace(/ - /克,'/'));
返回date.getTime();
}
VAR calculateAverageTimeToBed =功能(数据集){
变种totalTimeInMilliSeconds = 0;
对于(VAR I = 0; I< dataset.length ++我){
totalTimeInMilliSeconds + = convertTimeToMilliSecondsTest(数据集[I] .startTime);
}
VAR averageTimeInBed = totalTimeInMilliSeconds / dataset.length;
返回averageTimeInBed;
}
解决方案
这是一个功能,如果你正在寻找给定一组时间,不论日期的平均时间,给出一个24小时的周期。它适用于上午12时 - 中午12点,但不是12点 - 凌晨12点(因为跨越2天)。如果你是跨天,你必须使用该方法要求在被评估的时间给予全日我第一个回答。
//函数确定给定一组的平均时间
//在一个24小时的时间。期间,即上午12时 - 中午12点
//它不能用于24小时工作。期间中午12点 - 凌晨12点
无功倍= '11:59:00 AM','12:00:00 AM'];
//函数接受的时间数组作为参数
//需要时间的结构如上述
传播getAverageTime(次){
VAR数= times.length
变种timesInSeconds = [];
//通过次循环
对于(VAR I = 0; I<计数;我++){
//解析
VAR件=倍[I] .split(:);
变种的ampm =件[2] .split('');
VAR小时数=(件[0]);
VAR分钟数=(件[1]);
变种秒=编号(的ampm [0]);
变种的ampm = AMPM [1];
//转换为24小时格式(军用时间)
如果(AMPM =='点')小时=小时+ 12;
在时间秒//寻找价值
VAR totalSecs =小时* 60 * 60;
totalSecs + =分钟* 60;
totalSecs + =秒;
//添加到阵列
timesInSeconds [我] = totalSecs;
}
//发现平均timesInSeconds
无功总= 0;
执行console.log(timesInSeconds);
对于(VAR J = 0; J<计数; J ++){
总=总+数字(timesInSeconds [J]);
}
VAR平均= Math.round(总/数);
的console.log('平均秒:'+ AVG);
//转秒回一次
VAR avgMins = Math.floor(平均/ 60);
VAR avgSecs =平均 - (60 * avgMins);
变种avgHrs = Math.floor(avgMins / 60);
的console.log('时间:'+ avgHrs);
avgMins = avgMins - (60 * avgHrs);
//转换回至12小时。格式
VAR avgAmpm =AM;
如果(avgHrs> 12){
avgAmpm ='PM';
avgHrs = avgHrs - 12;
}
//添加前导零秒,分钟
avgSecs =(0+ avgSecs).slice(-2);
avgMins =(0+ avgMins).slice(-2);
// 你的回答
返回avgHrs +:+ avgMins +:+ avgSecs +''+ avgAmpm;
}
// 执行
警报(getAverageTime(次));
how to calculate average time with 11:59:00 PM and 12:00:00 AM so that it can be 11:59:30 PM. currently this code is giving me 11:59:30 AM
var convertTimeToMilliSecondsTest = function(time) {
var startDate = "1970/01/01";
if(time.indexOf("AM") != -1) {
newTime = time.replace("AM", " AM");
} else if(time.indexOf("PM") != -1) {
newTime = time.replace("PM", " PM");
}
var dateString = startDate + " " + newTime;
var date = new Date(dateString.replace(/-/g, '/'));
return date.getTime();
}
var calculateAverageTimeToBed = function(dataset) {
var totalTimeInMilliSeconds = 0;
for(var i = 0;i < dataset.length; ++i) {
totalTimeInMilliSeconds += convertTimeToMilliSecondsTest(dataset[i].startTime);
}
var averageTimeInBed = totalTimeInMilliSeconds / dataset.length;
return averageTimeInBed;
}
解决方案
This is a function for if you are looking for an average time given a set of times, regardless of date, given a 24 hr period. It works for 12am - 12pm but not 12pm - 12am (because that spans 2 days). If you are spanning days, you must use my first answer which requires the entire date be given in the time being evaluated.
// function will determine average time given a set of
// times in a 24 hr. period, i.e. 12am - 12pm
// it does NOT work for a 24 hr. period from 12pm - 12am
var times = ['11:59:00 AM', '12:00:00 AM'];
// function accepts an array of times as the argument
// requires time to be structured as above
function getAverageTime(times) {
var count = times.length
var timesInSeconds = [];
// loop through times
for (var i =0; i < count; i++) {
// parse
var pieces = times[i].split(':');
var ampm = pieces[2].split(' ');
var hrs = Number(pieces[0]);
var mins = Number(pieces[1]);
var secs = Number(ampm[0]);
var ampm = ampm[1];
// convert to 24 hr format (military time)
if (ampm == 'PM') hrs = hrs + 12;
// find value in seconds of time
var totalSecs = hrs * 60 * 60;
totalSecs += mins * 60;
totalSecs += secs;
// add to array
timesInSeconds[i] = totalSecs;
}
// find average timesInSeconds
var total = 0;
console.log(timesInSeconds);
for (var j =0; j < count; j++) {
total = total + Number(timesInSeconds[j]);
}
var avg = Math.round(total / count);
console.log('avg secs: '+avg);
// turn seconds back into a time
var avgMins = Math.floor(avg/60);
var avgSecs = avg - (60 * avgMins);
var avgHrs = Math.floor(avgMins/60);
console.log('hours: '+avgHrs);
avgMins = avgMins - (60 * avgHrs);
// convert back to 12 hr. format
var avgAmpm = 'AM';
if (avgHrs > 12) {
avgAmpm = 'PM';
avgHrs = avgHrs - 12;
}
// add leading zeros for seconds, minutes
avgSecs = ('0' + avgSecs).slice(-2);
avgMins = ('0' + avgMins).slice(-2);
// your answer
return avgHrs+':'+avgMins+':'+avgSecs+' '+avgAmpm;
}
// execute
alert(getAverageTime(times));
这篇关于如何计算平均时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文