题目描述
在经济、科技日益发达的今天,人们对时间的把握越来越严格,对于一个一定影响力的公司的高管来说,他可能要将自己的行程提前安排到下个月。对于普通人来说,他也可能将几天之后的安排已经提前做好。
请设计一个程序计算出今天距离未来的某一天还剩多少天。
假设今天是2015年10月18日。
输入
输入一个日期格式为yyyy-MM-dd,不考虑日期是否小于今天。
| 样例输入
2015-10-19
|
输出
输出一个数字表示今天(2015年10月18日)距离该日期还剩多少天。
| 样例输出
1 |
解题思路:需要注意的地方就是闰年的判断:能被4整出但不能被100整除或者能被400整除。
代码:
import java.util.*;
public class Main {
public static void main(String[] args) {
int mouth1[] = {31,28,31,30,31,30,31,31,30,31,30,31};
int mouth2[] = {31,29,31,30,31,30,31,31,30,31,30,31};
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] tmp = s.split("-");
int year = Integer.parseInt(tmp[0]);
int mouth = Integer.parseInt(tmp[1]);
int day = Integer.parseInt(tmp[2]);
int sum = 0;
if(year>2015){
sum+=74;
for(int i=2016;i<year;i++){
//System.out.println(1);
if((i%4==0&&i%100!=0)||(i%400==0)){
sum+=366;
}else{
sum+=365;
}
}
//System.out.println(sum);
if((year%4==0&&year%100!=0)||(year%400==0)){
for(int i=0;i<mouth-1;i++)
sum+=mouth2[i];
}else{
for(int i=0;i<mouth-1;i++)
sum+=mouth1[i];
}
//System.out.println(sum);
sum+=day;
}else{
if(mouth>10){
sum+=13;
for(int i = 11;i<mouth;i++)
sum+=mouth1[i-1];
sum+=day;
}else{
sum+=day-18;
}
}
System.out.println(sum);
}
}
看了一下大佬的代码,不看不知道,一看吓一跳啊。下面欣赏一下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
Date date = df.parse(sc.nextLine());
Date now =df.parse("2015-10-18");
long l=date.getTime()-now.getTime();
long day=l/(24*60*60*1000);
System.out.println(day);
}
}