Java 8 日期时间 API
2023-02-20 17:55 通往神之路 阅读(22) 评论(0) 编辑 收藏 举报package net.shopxx; import java.text.ParseException; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.Period; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; import java.util.concurrent.ThreadLocalRandom; /** * java8,时间类 * * @author * @version 9.0 */ public class RateLimiterDemo { public static void main(String[] args) throws ParseException, InterruptedException { //SimpleDateFormat 使用 Java 8 中的 DateTimeFormatter替换 LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("当前时间:"+localDateTime); System.out.println("当前时间加30天:"+localDateTime.plusDays(30)); System.out.println("//测试操作日期"); //可以使用各种 minus 和 plus 方法直接对日期进行加减操作,比如如下代码实现了减一天和加一天,以及减一个月和加一个月 System.out.println(LocalDate.now() .minus(Period.ofDays(1)) .plus(1, ChronoUnit.DAYS) .minusMonths(1) .plus(Period.ofMonths(1))); /* 使用 TemporalAdjusters.firstDayOfMonth 得到当前月的第一天; 使用 TemporalAdjusters.firstDayOfYear() 得到当前年的第一天; 使用 TemporalAdjusters.previous(DayOfWeek.SATURDAY) 得到上一个周六; 使用 TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY) 得到本月最后一个周五*/ System.out.println("//本月的第一天"); System.out.println(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth())); System.out.println("//今年的第一天,加255天"); System.out.println(LocalDate.now().with(TemporalAdjusters.firstDayOfYear()).plusDays(255)); System.out.println("//今天之前的一个周六"); System.out.println(LocalDate.now().with(TemporalAdjusters.previous(DayOfWeek.SATURDAY))); System.out.println("//本月最后一个工作日"); System.out.println(LocalDate.now().with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY))); //可以直接使用 lambda 表达式进行自定义的时间调整。比如,为当前时间增加 100 天以内的随机天数: System.out.println(LocalDate.now().with(temporal -> temporal.plus(ThreadLocalRandom.current().nextInt(100), ChronoUnit.DAYS))); //计算 2019 年 12 月 12 日和 2019 年 10 月 1 日的日期间隔,很明显日期差是 2 个月零 11 天,但获取 getDays 方法得到的结果只是 11 天,而不是 72 天: //解决办法 可以使用 ChronoUnit.DAYS.between System.out.println("//计算日期差"); LocalDate today = LocalDate.of(2019, 12, 12); LocalDate specifyDate = LocalDate.of(2019, 10, 1); System.out.println(Period.between(specifyDate, today).getDays()); System.out.println(Period.between(specifyDate, today)); System.out.println(ChronoUnit.DAYS.between(specifyDate, today)); } }
控制台展示: