java日期比较大小_Java日期大小比较

前言

在 Java 语言中,日期在计算机内部表示为(long型)时间点——自1970年1月1日以来经过的毫秒数。在开发中经常会用到日期的比较,像给定一个日期和当前日期进行比较,或者给定两个日期进行时间先后的比较,还有取两个日期之间的记录等等。现在整理一下几种方法。

先定义几个日期,以便下文进行测试:

String beginTime = new String("2020-08-09 13:32:20");

String endTime= new String("2099-10-08 11:21:32");

SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date beginDate=df.parse(beginTime);

Date endDate=df.parse(endTime);

LocalDate beginDateLoc= LocalDate.of(2020, 8, 9);

LocalDate endDateLoc= LocalDate.of(2099, 10, 8);

LocalDate自带方法isBefore、isAfter和isEqual

使用JDK8新增的函数 isBefore()、isAfter()和isEqual()来比较 LocalDate、LocalTime 和 LocalDateTime,本文仅以LocalDate为例。

if(beginDateLoc.isBefore(endDateLoc)) {

System.out.println("beginDate is before endDate");

}if(beginDateLoc.isAfter(endDateLoc)) {

System.out.println("beginDate is after endDate");

}if(beginDateLoc.isEqual(endDateLoc)) {

System.out.println("beginDate is equal to endDate");

}

LocalDate自带方法compareTo

System.out.println(beginDateLoc.compareTo(endDateLoc));

endDateLoc= LocalDate.of(2020, 6, 18);

System.out.println(beginDateLoc.compareTo(endDateLoc));

compareTo(ChronoLocalDate other)方法用法描述:如果此 Date等于参数 other,则返回0;如果在 other之前,则返回小于 0 的值;否则,返回大于 0 的值。

Date自带方法before和after比较

System.out.println(beginDate.before(endDate));

System.out.println(beginDate.after(endDate));

System.out.println(beginDate.equals(endDate));

温馨提示:日期格式必须一致。

把日期转化成长整型进行比较

/*** 功能描述:求两个时间相减后的毫秒数。

* 差格式化时间后,计算 endDt 减 beginDt 的秒数。

* millDif >0 : endDt > beginDt

*

*@parambeginDt 开始时间

*@paramendDt 结束时间

*@returnLong 时间差,单位:milliseconds*/

public staticLong getMillSub(String beginDt, String endDt, String formatStr) {long millDif = 0;if(StringUtils.isBlank(formatStr)) {

formatStr= "yyyy-MM-dd";

}try{

SimpleDateFormat df= newSimpleDateFormat(formatStr);

Date beginDate=df.parse(beginDt);

Date endDate=df.parse(endDt);

millDif= endDate.getTime() -beginDate.getTime();

}catch(Exception e) {

log.error("日期转换失败,", e);return null;

}returnmillDif;

}

Calender自带方法before()和after()

Calendar 类也有 compareTo、equals、after 和 before 方法,工作方式与上面描述的 Date 类的方法类似。因此,如果日期信息保存在 Calendar 类中,则不需要提取日期进行比较。

Calendar cal1 =Calendar.getInstance();

Calendar cal2=Calendar.getInstance();

cal1.setTime(beginDate);

cal2.setTime(endDate);if(cal1.after(cal2)) {

System.out.println("beginTime is after endTime");

}if(cal1.before(cal2)) {

System.out.println("beginTime is before endTime");

}if(cal1.equals(cal2)) {

System.out.println("beginTime is equal to endTime");

}

小结

本文主要总结了在 Java 中比较日期的几种常用方法,以提高自己实际操作的能力。

文章到这里就结束了,看完之后你有什么想法想要跟大家分享呢?评论区在等着你!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值