package com.huang.algorithm;
public class Demo033 {
public static void main(String[] args) {
System.out.println(distance(2015,12,1,1,6));
}
// 定義一週的中文名稱
public static String[] week = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
// 定義平年每月天數
public static int[] monthday1 ={0,31,28,31,30,31,30,31,31,30,31,30,31};
// 定義閏年每月天數
public static int[] monthday2 ={0,31,29,31,30,31,30,31,31,30,31,30,31};
/**
* 計算兩個日期之間的天數差,並返回包含距離天數和星期的字串。
*
* @param year 年份
* @param month 月份
* @param day 日期
* @param newMonth 新的月份
* @param newDay 新的日期
* @return 返回格式化後的字串,包含天數差和對應的星期
*/
public static String distance(int year, int month, int day, int newMonth, int newDay){
int sum = 0;
// 當月和新月總和大於等於12,說明跨年計算
if (month + newMonth >= 12) {
// 計算閏年和非閏年的天數差
if (((year+1)%4 == 0 && (year+1)%100 != 0) || (year+1)%400 == 0){
// 閏年總天數
sum += 366 + newDay;
// 累加新年的月份天數
for (int i = 0; i < newMonth-12;i++){
sum += monthday2[i];
}
} else {
// 非閏年總天數
sum += 365 + newDay;
// 累加新年的月份天數
for (int i = 0; i < newMonth-12;i++){
sum += monthday1[i];
}
}
} else {
// 同一年內計算天數差
for (int i=0;i<newMonth;i++) {
sum += monthday1[i];
}
sum += newDay;
}
// 返回計算結果,包含天數差和對應的星期
return "距離天數:" + sum + ";" + week[sum%7];
}
}