/**
* 2015年12月9日下午9:01:18
*
* @author hp TODO 计算两个日期之间的天数
*
*/
public class MyCalender {
/**
* 判断该年是不是闰年
*
* @param year
* 年份
* @return 是则返回true,否则返回false
*/
public boolean isLeapYear(int year) {
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
/**
* 返回当月的天数
*
* @param year
* 年份
* @param month
* 月份
* @return
*/
public int getDayOfMonth(int year, int month) {
int[] day = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (isLeapYear(year) && 2 == month) {// 闰年且为2月时
return day[month] + 1;
}
return day[month];
}
/**
* 计算两个日期之间的天数(结束日期必须大于开始日期)
*
* @param startYear
* 开始年份
* @param startMonth
* 开始月份
* @param startDay
* 开始日
* @param endYear
* 结束年份
* @param endMonth
* 结束月份
* @param endDay
* 结束日
* @return
*/
public long countDayBetweenTowDate(int startYear, int startMonth, int startDay, int endYear, int endMonth,
int endDay) {
long sum = 0;
int startDate = 0;
int endDate = 0;
for (int year = startYear; year < endYear; year++) {
sum += 365;
if (isLeapYear(year)) {
sum++;
}
}
for (int month = 0; month < startMonth; month++) {
startDate += getDayOfMonth(startYear, month);
}
startDate += startDay;
for (int month = 0; month < endMonth; month++) {
endDate += getDayOfMonth(endYear, month);
}
endDate += endDay;
sum = sum + endDate - startDate;
return sum;
}
public static void main(String[] args) {
MyCalender calender = new MyCalender();
int startYear = 1990;
int startMonth = 1;
int startDay = 1;
int endYear = 1990;
int endMonth = 12;
int endDay = 31;
// 这里您可以使用Scanner 进行控制台输进
System.out.println(calender.countDayBetweenTowDate(startYear, startMonth, startDay, endYear, endMonth, endDay));
}
}
简单的。