import java.util.Arrays;
import java.util.Scanner;
public class Demo09 {
static int[][] days = { // 定義平年days[0]和閏年days[1]
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
// 字元串轉換 整數
public static int[] conversion(String s) {
String[] ss = s.split("\\-");
int[] t = new int[3];
t[0] = Integer.parseInt(ss[0]);
t[1] = Integer.parseInt(ss[1]);
t[2] = Integer.parseInt(ss[2]);
return t;
}
// 計算任意一年内的總天數 (是365還是366)
public static int calcDay(int y,int m,int d){
int sum = d; // 每一年的總天數 (初始化為最後一個月的天數)
int i = 0; // 平年下标為 0
if((y%4==0&&y%100!=0)||(y%400==0)) i = 1; // 閏年下标為 1
for(int j=0;j
sum += days[i][j];
}
return sum;
}
// 判斷是否交換輸入的兩個日期 (日期小者放前)
public static void isSwap(int[] o,int[] n){
if(o[0]>n[0]){ // 日期内容交換
for(int i=0;i
int t = o[i];
o[i] = n[i];
n[i] = t;
}
}
}
// 輸出
public static String p(int[] s){
StringBuffer sb = new StringBuffer();
for(int i=0;i
sb.append(s[i]+"-");
}
sb.append(s[s.length-1]);
return sb.toString();
}
// 計算總天數
public static int calc(int[] o, int[] n) {
int sum;
if(n[0]==o[0]){ // 如果年份相等,側直接計算天數
sum = calcDay(n[0],n[1],n[2])-calcDay(o[0],o[1],o[2]); // 大的日期天數-小的日期天數
}else{
sum = calcDay(o[0],12,31)-calcDay(o[0],o[1],o[2]); // 得到第一年日期到下一年開始的天數
for(int i=o[0]+1;i
sum += calcDay(i,12,31);
}
sum += calcDay(n[0],n[1],n[2]); // 加上最後一年的天數
}
return sum;
}
public static void main(String[] args){
// int[] o = conversion("1949-10-2");
Scanner scan = new Scanner(System.in);
System.out.print("輸入日期格式為:(1949-10-2)\n輸入第一個日期:");
int[] o = conversion(scan.nextLine());
System.out.print("輸入第二個日期:");
int[] n = conversion(scan.nextLine());
int sum = 0; // 總和
isSwap(o,n); // 如果o日期小于n日期,側交換
sum = calc(o, n); // 計算總天數
System.out.println(p(o)+" 到 "+p(n)+"\n距離"+sum+"天");
}
}
版權申明:本站文章部分自網絡,如有侵權,請聯系:[email protected]
特别注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖檔等素材,版權歸原作者所有,如需使用,請與原作者聯系。