不要用 Java Calendar 处理时间了,有这么多方法可以使用!
Java 8 已经非常普遍了,但令人惊讶的是,仍然有人在项目中使用 Java Calendar
类来处理时间和日期。不仅性能差,代码还冗余。为什么不用 Java 8 提供的现代日期和时间 API 呢?
以下是总结的 18 种处理日期的方式,值得收藏。
Java 日期与时间的历史遗留问题
Java 处理日期、日历和时间的方式一直备受批评。java.util.Date
是可变类型,而 SimpleDateFormat
线程不安全。这使得它们的应用非常受限。
Java 8 引入的新 API 基于 ISO 标准日历系统,java.time
包下的所有类都是不可变且线程安全的。
示例 1:获取今天的日期
在 Java 8 中,LocalDate
用于表示当天日期,不包含时间。当你仅需表示日期时,应使用这个类。
示例 2:获取年、月、日信息
示例 3:处理特定日期
通过 LocalDate.of()
方法,可以创建任意日期。这个方法避免了旧 API 中的问题,如年份起始于 1900、月份从 0 开始等。
示例 4:判断两个日期是否相等
示例 5:检查周期性事件(如生日)
无论年份如何,只要日期与生日匹配,就会输出祝贺信息。
示例 6:获取当前时间
LocalTime
仅包含时间信息,没有日期。
示例 7:计算未来时间
通过 plusHours()
方法可以增加时间。所有这些操作返回的都是新的实例,因其不可变性。
示例 8:计算一周后的日期
示例 9:计算一年前或一年后的日期
示例 10:使用 Clock
获取时间戳
Clock
类可替代 System.currentTimeInMillis()
和 TimeZone.getDefault()
。
示例 11:判断日期早晚
通过 isBefore()
和 isAfter()
方法判断日期顺序。
结论
Java 8 新的日期和时间 API 提供了更简洁、安全且高效的方式处理时间相关任务。充分利用它,避免冗余的旧式 Calendar
和 Date
操作。
评论区