赛码网--日期倒计时(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);
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值