时间工具类

1.LocalDateTime,LocalDate,LocalTime:

复制代码
time1.plusYears(1l);//加一年
time1.plus(2l, ChronoUnit.YEARS);//加两年

time1.plusYears(-1l);//减一年
time1.plus(-2l, ChronoUnit.YEARS);//减两年

2.LocalDateTime类中方法,可以直接使用方法isBefore、isAfter和isEqual来判定时间的先后。

复制代码
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-04-01 10:20:30");
Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-04-01 11:25:55");


if (date1.before(date2)) {

    System.out.println("date1 is before date2");

} else if (date1.after(date2)) {

    System.out.println("date1 is after date2");

} else {

    System.out.println("date1 is equal to date2");

}

3.使用Date类比较,Java Date 类提供了before、after和equals方法来比较两个日期。

复制代码
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-04-01 10:20:30");
Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-04-01 11:25:55");


if (date1.before(date2)) {

    System.out.println("date1 is before date2");

} else if (date1.after(date2)) {

    System.out.println("date1 is after date2");

} else {

    System.out.println("date1 is equal to date2");

}

4.使用 Calendar 类比较,Calendar 类也可以用来比较日期,通过将 Date 对象转换成 Calendar 对象来比较时间。

复制代码
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();

Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-04-01 10:20:30");
Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-04-01 11:25:55");



cal1.setTime(date1);


cal2.setTime(date2);


if (cal1.before(cal2)) {

    System.out.println("cal1 is before cal2");

} else if (cal1.after(cal2)) {

    System.out.println("cal1 is after cal2");

} else {

    System.out.println("cal1 is equal to cal2");

}

5.使用 Instant 类比较

对于UTC时间的比较,可以使用 Instant 类进行时间戳的比较。

复制代码
Instant instant1 = dateTime1.toInstant(ZoneOffset.UTC);
Instant instant2 = dateTime2.toInstant(ZoneOffset.UTC);


if (instant1.isBefore(instant2)) {

    System.out.println("instant1 is before instant2");

} else if (instant1.isAfter(instant2)) {

    System.out.println("instant1 is after instant2");

} else {

    System.out.println("instant1 is equal to instant2");

}
  1. 考虑时区的时间比较

当涉及到不同时区的时间比较时,可能需要转换为统一的时区然后进行比较。

复制代码
ZonedDateTime zonedDateTime1 = ZonedDateTime.of(dateTime1, ZoneId.of("America/New_York"));
ZonedDateTime zonedDateTime2 = ZonedDateTime.of(dateTime2, ZoneId.of("America/Los_Angeles"));


if (zonedDateTime1.isBefore(zonedDateTime2)) {

    System.out.println("zonedDateTime1 is before zonedDateTime2");

} else if (zonedDateTime1.isAfter(zonedDateTime2)) {

    System.out.println("zonedDateTime1 is after zonedDateTime2");

} else {

    System.out.println("zonedDateTime1 is equal to zonedDateTime2");

}

引用:java比较时间大小 -- PingCode

相关推荐
ly768910 分钟前
Redis 主从复制全解析:从 PSYNC 协议到复制积压缓冲区的故障切换边界
java·数据库·redis·主从复制·故障切换·psync
Alice-YUE24 分钟前
提示词工程:工业级 Prompt 写法与分层组装
java·开发语言·大模型·prompt·提示词工程·system prompt
泡茶喝茶写代码26 分钟前
A股量化数据工程:从 REST 接口到策略信号(第 4 篇):行业与概念板块树构建
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
弹简特42 分钟前
【Java项目-企悦抽】17-抽奖模块02-抽奖接口实现
java·开发语言·状态模式·springboot
吴声子夜歌1 小时前
Nginx应用与运维——Nginx编译及部署(部署)
java·运维·nginx
乌暮1 小时前
JVM 原理与实践:从运行时数据区到线上故障排查
java·开发语言·jvm·后端·学习·面试
code2cat1 小时前
【随笔】MCP缓存期限与共享范围:让Agent复用资料时记住边界
java·后端·缓存·ai agent·mcp
逃逸线LOF2 小时前
工具类文件头文件
java
Wang's Blog2 小时前
Java 项目实战: 外卖平台优化-Nginx目录结构与conf配置文件体系
java·nginx
蜗牛互联网2 小时前
Gemini 4 Argon的1M输出窗口与长程Agent工程边界
java·人工智能·后端