java計算兩個日期之間相差的天數 跨月與不跨月
阿新 • • 發佈:2021-02-02
跨月:
public static void main(String[] args) { String star="2020-02-03"; String end="2025-03-02"; String[] star1=star.split("-"); String[] end1=end.split("-"); int days=0; if(Integer.parseInt(star1[0])<Integer.parseInt(end1[0])){ for(int i=Integer.parseInt(star1[0]);i<Integer.parseInt(end1[0]);i++){ //計算是否是瑞年 if(i%4==0&&i%100!=0||i%400==0){ days+=366; }else{ days+=365; } } } //得到開始那一年已過去的日期 int starday=days(star1[0],star1[1],star1[2]); //得到結束那一年已過去的日期 int endday=days(end1[0],end1[1],end1[2]); //減去開始那一年已過去的日期,加上結束那一年已過去的日期 days=days-starday+endday; System.out.println("相差的天數:"+days); } public static int days(String year,String month,String day){ int days=0; int nowyear=Integer.parseInt(year); int[] monthday={0,31,28,31,30,31,30,31,31,30,31,30,31}; int[] monthday1={0,31,29,31,30,31,30,31,31,30,31,30,31}; boolean flag=true; if(nowyear%4==0&&nowyear%100!=0||nowyear%400==0){ }else{ flag=false; } for(int i=0;i<Integer.parseInt(month);i++){ if(flag){ days+=monthday1[i]; }else{ days+=monthday[i]; } } days+=Integer.parseInt(day); return days; }
不跨月:
public static void main(String[] args) { DateFormat dft = new SimpleDateFormat("yyyy-MM-dd"); try { Date star = dft.parse("2020-02-03");//開始時間 Date endDay=dft.parse("2025-03-02");//結束時間 Long starTime=star.getTime(); Long endTime=endDay.getTime(); Long num=endTime-starTime;//時間戳相差的毫秒數 System.out.println("相差天數為:"+num/24/60/60/1000);//除以一天的毫秒數 } catch (ParseException e) { e.printStackTrace(); } }