java比较时间大小

本文介绍了在Java中如何使用SimpleDateFormat和Date对象进行日期比较,以及before和after方法的用法。通过示例代码展示了日期的正确比较,并强调了时间戳在比较中的重要性。同时,提醒在处理日期时要注意时间的完整性和逻辑错误,例如开始时间不应大于结束时间。
摘要由CSDN通过智能技术生成

我们做一些业务开发的时候,经常会遇到关于日期的条件的判断,我举个例子:在一次列表中会有一次对日期的筛选,这时如果用户选择时间2021-4-5~2021-4-4 这种格式的。这时我们就应该给他提示开始时间不能大于结束时间,这种就是逻辑错误!
我在网上找了一些资料:

1.before

英文翻译就是 在xxx之前 意思就是前面的参数小后面参数大 那就是true
格式: xx.before(xx)
可以理解为以括号里的日期为准,表示以它之前的日期来比较

2.after

表示在xxx之后,前面大后面小 那就是true
格式 : xx.after(xx)
同理:以括号为中心,以它之后的日期为true

例子:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = sdf.parse("2019-5-28");
        Date d2 = sdf.parse("2019-5-28");
        System.out.println("d1=d2时,before函数:"+d1.before(d2));
        System.out.println("d1=d2时,after函数:"+d1.after(d2));
        
        d1 = sdf.parse("2019-5-28");
        d2 = sdf.parse("2019-5-29");
        System.out.println("d1<d2时,before函数:"+d1.before(d2));
        System.out.println("d1<d2时,after函数:"+d1.after(d2));
        
        d1 = sdf.parse("2019-5-28");
        d2 = sdf.parse("2019-5-27");
        System.out.println("d1>d2时,before函数:"+d1.before(d2));
        System.out.println("d1>d2时,after函数:"+d1.after(d2));
        
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date s1 = sdf1.parse("2019-5-28 12:30:25");
        Date s2 = sdf1.parse("2019-5-28 12:31:25");
        System.out.println("s1.before(s2) = " + s1.before(s2));

答案:

d1=d2时,before函数:false
d1=d2时,after函数:false
d1<d2时,before函数:true
d1<d2时,after函数:false
d1>d2时,before函数:false
d1>d2时,after函数:true
s1.before(s2) = true

总结:

1.比较的时候,最好是年月日时分秒 ,不然年月日比较可能会存在一样的情况,那么就会一直返回false
2.before: 可以理解为 xx1<xx2 ,前面小于后面 为true ,前小后大 true
after :可以理解为xx1>xx2 前面大后面小 为true , 前大后小 true

3.getTime

语法:xx.getTime 其中xx是Date类型
表示会把指定的日期类型转为时间戳
例子:

 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date s1 = sdf1.parse("2019-5-28 12:30:25");
        Date s2 = sdf1.parse("2019-5-28 12:31:25");
        long time = s1.getTime();
        long d2Time = s2.getTime();
        System.out.println("time = " + time);
        System.out.println("d2Time = " + d2Time);
        System.out.println(time==d2Time);

答案:

time = 1559017825000
d2Time = 1559017885000
false

注意:我们可以将getTime转换为包装器类型 然后使用compareTo来进行比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值