1. 程式人生 > 其它 >java計算兩個日期之間相差的天數 跨月與不跨月

java計算兩個日期之間相差的天數 跨月與不跨月

技術標籤:日期相關java

跨月:

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();
		    }
	}