賽碼網--日期倒計時(Java實現)
阿新 • • 發佈:2019-01-03
題目描述
在經濟、科技日益發達的今天,人們對時間的把握越來越嚴格,對於一個一定影響力的公司的高管來說,他可能要將自己的行程提前安排到下個月。對於普通人來說,他也可能將幾天之後的安排已經提前做好。
請設計一個程式計算出今天距離未來的某一天還剩多少天。
假設今天是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); } }