1. 程式人生 > >賽碼網--日期倒計時(Java實現)

賽碼網--日期倒計時(Java實現)

題目描述

在經濟、科技日益發達的今天,人們對時間的把握越來越嚴格,對於一個一定影響力的公司的高管來說,他可能要將自己的行程提前安排到下個月。對於普通人來說,他也可能將幾天之後的安排已經提前做好。

請設計一個程式計算出今天距離未來的某一天還剩多少天。

假設今天是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);
	}

}