计算两个日期之间有多少天多少小时多少分钟

本文介绍了一个Java程序,用于计算两个日期之间的天数、小时、分钟、秒和毫秒,并列出这两个日期之间的所有日期,包括起始和结束日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class CalculateIntervalBetween2Dates {
private static final long DAY=24*60*60*1000;
private static final long HOUR=60*60*1000;
private static final long MINUTES=60*1000;
private static final long SECONDS=1000;
private static final long MILLIONSECONDS=1;

public static void main(String[] args) {
String startDateStr = "20121022";
String endDateStr = "20121206";
CalculateIntervalBetween2Dates.listNumberOfDates(startDateStr, endDateStr);
CalculateIntervalBetween2Dates.calculateInterval(startDateStr, endDateStr,MILLIONSECONDS);
CalculateIntervalBetween2Dates.calculateInterval(startDateStr, endDateStr,SECONDS);
CalculateIntervalBetween2Dates.calculateInterval(startDateStr, endDateStr,MINUTES);
CalculateIntervalBetween2Dates.calculateInterval(startDateStr, endDateStr,HOUR);
CalculateIntervalBetween2Dates.calculateInterval(startDateStr, endDateStr,DAY);
}

/**
* List dates between start date and end date, including the start date and end date.
* @param startDateStr
* @param endDateStr
*/
public static void listNumberOfDates(String startDateStr,String endDateStr){
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
Date startDate = null;
Date endDate = null;
try {
startDate = sf.parse(startDateStr);
endDate = sf.parse(endDateStr);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar c1 = Calendar.getInstance();
List<Date> cancelDates = new ArrayList<Date>();
if (startDate != null && endDate != null && startDate.before(endDate)) {
Date tempDate = startDate;
do {
cancelDates.add(tempDate);
c1.setTime(tempDate);
c1.add(Calendar.DAY_OF_MONTH, 1);
tempDate = c1.getTime();
} while (tempDate.before(endDate));
cancelDates.add(endDate);
}

System.out.println("There are " + cancelDates.size() + " days between " + sf.format(startDate) + " and " + sf.format(endDate) + ", inclusive.");
System.out.println("See the following list:");
for (Date date : cancelDates) {
System.out.println(sf.format(date));
}
System.out.println();
}

/**
* Calculate how many days/hours/minutes/seconds/million seconds between start date and end date, including the start date and end date.
* @param startDateStr
* @param endDateStr
* @param interval
*/
public static void calculateInterval(String startDateStr,String endDateStr,long interval){
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
Date startDate = null;
Date endDate = null;
try {
startDate = sf.parse(startDateStr);
endDate = sf.parse(endDateStr);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar c1 = Calendar.getInstance();
c1.setTime(startDate);
long startInMillis=c1.getTimeInMillis();
c1.setTime(endDate);
//inclusive,2009/10/24-2009/10/23=1,but actually 2 days
c1.add(Calendar.DAY_OF_MONTH, 1);

long endInMillis=c1.getTimeInMillis();
long between=endInMillis-startInMillis;
System.out.println("There are " + (between/interval) +" "+getIntervalLabel(interval) + " between " + sf.format(startDate) + " and " + sf.format(endDate) + ", inclusive");
}

private static String getIntervalLabel(long interval){
if(interval==DAY){
return "days";
}else if(interval==HOUR){
return "hours";
}else if(interval==MINUTES){
return "minutes";
}else if(interval==SECONDS){
return "seconds";
}else if(interval==MILLIONSECONDS){
return "million seconds";
}else{
return "error";
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值