codeup 1928 日期差值(Java语言)
程序员文章站
2022-06-09 20:41:47
题目来源:codeup题目描述:有两个日期,求两个日期之间的天数,如果两个日期是连续的,则规定他们之间的天数为两天。样例输入:2013010120130105样例输出:5解题思路:闰平年的天数可以利用打表法,填入一个二维数组中,方便直接调用最简单的就是一天一天的累加,直到天数小的加到等于大的如果天数达到该月数最大,月数+1,天数置为1如果月数达到13,年数+1,月数置为1优化可以先将year1和year2的差值变为1,之后再进行上述操作代码:/** *作者:魏...
题目来源: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