Java 计算多个日期平均时长 - 详细代码示例
你可以使用java.util.Date和java.util.Calendar来计算多个日期的平均时长。下面是一个示例函数:
import java.util.Date;
import java.util.Calendar;
public class AverageDurationCalculator {
public static void main(String[] args) {
// 日期示例:3天1小时20分19秒
Date date1 = createDate(3, 1, 20, 19);
Date date2 = createDate(2, 4, 30, 10);
Date date3 = createDate(1, 10, 45, 55);
Date averageDuration = calculateAverageDuration(date1, date2, date3);
System.out.println('平均时长:' + formatDuration(averageDuration));
}
public static Date calculateAverageDuration(Date... dates) {
Calendar totalDuration = Calendar.getInstance();
for (Date date : dates) {
Calendar duration = Calendar.getInstance();
duration.setTime(date);
totalDuration.add(Calendar.DAY_OF_YEAR, duration.get(Calendar.DAY_OF_YEAR));
totalDuration.add(Calendar.HOUR_OF_DAY, duration.get(Calendar.HOUR_OF_DAY));
totalDuration.add(Calendar.MINUTE, duration.get(Calendar.MINUTE));
totalDuration.add(Calendar.SECOND, duration.get(Calendar.SECOND));
}
int averageDays = totalDuration.get(Calendar.DAY_OF_YEAR) / dates.length;
int averageHours = totalDuration.get(Calendar.HOUR_OF_DAY) / dates.length;
int averageMinutes = totalDuration.get(Calendar.MINUTE) / dates.length;
int averageSeconds = totalDuration.get(Calendar.SECOND) / dates.length;
return createDate(averageDays, averageHours, averageMinutes, averageSeconds);
}
public static Date createDate(int days, int hours, int minutes, int seconds) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, days);
calendar.set(Calendar.HOUR_OF_DAY, hours);
calendar.set(Calendar.MINUTE, minutes);
calendar.set(Calendar.SECOND, seconds);
return calendar.getTime();
}
public static String formatDuration(Date duration) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(duration);
int days = calendar.get(Calendar.DAY_OF_YEAR);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
return days + '天' + hours + '小时' + minutes + '分' + seconds + '秒';
}
}
这个函数首先定义了一个calculateAverageDuration函数,它接受一个可变参数的Date数组。在函数内部,我们使用Calendar来计算总时长。然后,我们计算平均时长,即将总时长除以日期数量。最后,我们使用createDate函数创建一个新的Date对象,并返回它。
createDate函数接受天、小时、分钟和秒作为参数,并使用Calendar来设置相应的时间字段。它返回一个新的Date对象。
formatDuration函数用于将日期格式化为'X天X小时X分X秒'的字符串。它使用Calendar来获取天、小时、分钟和秒,并将它们拼接成字符串返回。
在main函数中,我们创建了三个示例日期,并调用calculateAverageDuration来计算它们的平均时长。然后,我们使用formatDuration函数将结果格式化为字符串并打印出来。
原文地址: http://www.cveoy.top/t/topic/fPF2 著作权归作者所有。请勿转载和采集!