Java 计算日期差

问题描述

计算两个日期相差天数,或者某个日期与当前日期相差天数

(一)问题分析

计算两个日期的毫秒值之差,除一天的毫秒值(246060*1000),即为两个日期的天数之差

1.输入日期

(1)输入的日期为字符串型
(2)规定用户输入格式为 yyyy-MM-dd(如2002-9-12或2002-09-12)

	public static void main(String[] args) throws ParseException{
        String star,end;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入开始日期:yyyy-MM-dd");
        star = sc.next();
        System.out.println("请输入结束日期:yyyy-MM-dd");
        end = sc.next();
2.计算相差天数

(1)实例化 SimpleDateFormat 类(可以自定义格式,但保证与用户输入格式保持一致)
(2)调用 parse 方法,把输入的日期格式转化成 Date 类格式
(3)调用getTime方法,获取日期的毫秒值
(4)毫秒值相减再除一天的毫秒值得到相差天数

		SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
        Date Star =sdf.parse(star);
        Date End =sdf.parse(end);
        long StarTime =Star.getTime();
        long EndTime =End.getTime();
        long E_S =EndTime-StarTime;
        long interval =E_S/(24*60*60*1000);
        System.out.println("相差天数为:"+interval);
3.计算与当前日期相差天数

(1)与两个日期相差天数类似
(2)结束日期替换成当前系统日期

		String time;
        System.out.println("请输入日期:yyyy-MM-dd");
        time = sc.next();
        Date Time =sdf.parse(time);
        Date now =new Date();
        long TimeTime =Time.getTime();
        long NowTime =now.getTime();
        long N_T =NowTime-TimeTime;
        long interval1 =N_T/(24*60*60*1000);
        System.out.println("距离今天相差天数为:"+interval1);

(二)完整代码

将上述代码整理

  • 注意需要导入的包
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Scanner;
public class Interval {
    public static void main(String[] args) throws ParseException{
        String star,end;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入开始日期:yyyy-MM-dd");
        star = sc.next();
        System.out.println("请输入结束日期:yyyy-MM-dd");
        end = sc.next();

        SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
        Date Star =sdf.parse(star);
        Date End =sdf.parse(end);
        long StarTime =Star.getTime();
        long EndTime =End.getTime();
        long E_S =EndTime-StarTime;
        long interval =E_S/(24*60*60*1000);
        System.out.println("相差天数为:"+interval);

        String time;
        System.out.println("请输入日期:yyyy-MM-dd");
        time = sc.next();
        Date Time =sdf.parse(time);
        Date now =new Date();
        long TimeTime =Time.getTime();
        long NowTime =now.getTime();
        long N_T =NowTime-TimeTime;
        long interval1 =N_T/(24*60*60*1000);
        System.out.println("距离今天相差天数为:"+interval1);

    }
}

(三)运行结果

在这里插入图片描述

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值