java 已经出到 17 了,而小编还在用 8 的版本,在 8 中已经推出了新的日期 API,不在使用 。java.time 包下提供了用于日期、时间、实例和周期的主要 API。
获取今天日期
LocalDate 存储了日期,如:2022-01-09,它不包含时间。
1 |
|
设置日期
of 方法是一个静态方法,接收年、月、日三个 int 参数,返回 LocalDate 对象。需要注意的是月不是从 0 开始的。
1 |
|
日期判断
日期操作第一个会想到的就是两个日期是否相等的操作
1 |
|
当前日期是否早于、晚于另外的日期,使用 isAfter() 和 isBefore() 方法。
1 |
|
匹配周期性的日期
在某些业务中,每年、每月、每周都会有一个特定的日期,比如每个月的账单日、每年的生日等日期,这时就不能把年、月等放入日期比较。可以使用 DayOfWeek、MonthDay、YearMonth 类处理这类日期。
1 |
|
一周、月、年前、后的日期
ChronoUnit 是用来表示时间的单位,比如:ChronoUnit.YEARS 年,ChronoUnit.WEEKS 周。minus()、plus() 方法用来减去、加上一个时间周期。
1 |
|
日期间隔
计算两个日期的间隔了多少天、月是一个很常规的业务操作。月是用 Period 类计算,天使用 LocalDate 的 toEpochDay() 方法计算。
1 |
|
时间戳
Instant 类有一个静态工厂方法now()会返回当前的时间戳。
1 |
|
格式化日期
DateTimeFormatter 是一个线程安全的日期和时间格式化器,下面是用 DateTimeFormatter.BASIC_ISO_DATE 将 20210109 格式化成了 2021-01-09。
1 |
|
DateTimeFormatter 也可以自定义格式化字符串。
1 |
|
是否为闰年
小编在学程序之初被闰年折磨的死去活来,给个年份计算是不是闰年。java 8 的 isLeapYear() 就很好的解决了这个问题。
1 |
|
日期转字符串
上面格式化的例子是将字符串转为日期,下面是将日期转为字符串。
1 |
|