上海交通大学 日期差值(java)

题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入
复制
20110412
20110422
输出
复制
11
import java.util.*;
import java.io.*;
import java.text.* ;
public class Main
{
	public static int[] mon= {0,31,59,90,120,151,181,212,243,273,304,334};
    public static void main(String[] args) throws ParseException{
    	try {
	        BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
	        String date1 = br.readLine();
	        String date2 = br.readLine();
	        int year1 = Integer.parseInt(date1.substring(0, 4));
	        int year2 = Integer.parseInt(date2.substring(0, 4));
	        int month1 = Integer.parseInt(date1.substring(4, 6));
	        int month2 = Integer.parseInt(date2.substring(4, 6));
	        int day1 = Integer.parseInt(date1.substring(6, 8));
	        int day2 = Integer.parseInt(date2.substring(6, 8));
	        int sum1 = getDay(year1, month1, day1);
	        int sum2 = getDay(year2, month2, day2);
	        System.out.println(Math.abs(sum2-sum1)+1);
 	    } catch (IOException e) {
	        e.printStackTrace();
	    }
    }
    public static int getDay(int year, int month, int day){
        int sum = 0;
        for (int i = 1; i < year; i++) {
            if ((i % 4 == 0 && i % 100 != 0 ) || i % 400 == 0) {
                sum += 366;
            } else {
                sum += 365;
            }
        }
        sum += mon[month-1];
        if (((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)&&month>1) sum++;
        sum += day;
        return sum;
    }
}
发布了231 篇原创文章 · 获赞 22 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43306331/article/details/104186893