codeup 1928 日期差值(Java语言)

2022-07-27,,,

题目来源:codeup

题目描述:

有两个日期,求两个日期之间的天数,如果两个日期是连续的,则规定他们之间的天数为两天。

样例输入:

20130101
20130105

样例输出:

5

解题思路:

闰平年的天数可以利用打表法,填入一个二维数组中,方便直接调用
最简单的就是一天一天的累加,直到天数小的加到等于大的
如果天数达到该月数最大,月数+1,天数置为1
如果月数达到13,年数+1,月数置为1
优化可以先将year1和year2的差值变为1,之后再进行上述操作

代码:

/**
 *作者:魏宝航
 *2020年11月26日,下午20:32
 */
import java.util.*;
public class Test{
	public static int[][] month=new int[][] {
		{0,0},
		{31,31},{28,29},{31,31},
		{30,30},{31,31},{30,30},
		{31,31},{31,31},{30,30},
		{31,31},{30,30},{31,31}};
	public static int isLeap(int year) {
		if((year%4==0&&year%100!=0)||(year%400==0)){
			return 1;
		}
		return 0;
	}
    public static void main(String[] args) {
    	Scanner sc=new Scanner(System.in);
        int time1,time2;
        time1=sc.nextInt();
        time2=sc.nextInt();
        if(time1>time2) {
        	time1^=time2;
        	time2^=time1;
        	time1^=time2;
        }
        int year1=time1/10000;
        int year2=time2/10000;
        int month1=time1%10000/100;
        int month2=time2%10000/100;
        int day1=time1%100;
        int day2=time2%100;
        int ans=1;
        while(year1<year2||month1<month2||day1<day2) {
        	day1++;
        	if(month[month1][isLeap(year1)]+1==day1) {
        		month1++;
        		day1=1;
        	}
        	if(month1==13) {
        		year1++;
        		month1=1;
        	}
        	ans++;
        }
        System.out.println("两天的间隔为:"+ans);
    }
}  

本文地址:https://blog.csdn.net/m0_47256162/article/details/110203778

《codeup 1928 日期差值(Java语言).doc》

下载本文的Word格式文档,以方便收藏与打印。