> 文档中心 > 都什么年代了你还在用Date

都什么年代了你还在用Date


传统的 Date

这篇文章就主要来谈一谈 Java 中处理日期时间用什么 API 比较好。我本来不准备写这篇文章的,因为我觉得 Java17 都特么出来了,大家对 Java8 提供的时间日期 API 都很熟悉了。但是经过我调研,很多中小公司还在用老版本的 Date 来处理时间日期,视 Java8 提供的时间日期 API 于无物,所以还是想来推荐一下新一代的时间日期 API,希望对大家有帮助。

老版本的 Date 相信大家都很熟悉了,这里就简单介绍几个点
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    Date date = new Date();//默认北京时区的时间    System.out.println("北京时区:" + sdf.getTimeZone());    System.out.println("北京时区时间:" + sdf.format(date));    sdf.setTimeZone(TimeZone.getTimeZone(ZoneId.of("Asia/Jakarta")));    System.out.println("雅加达时区:" + sdf.getTimeZone());    System.out.println("雅加达时区时间:" + sdf.format(date));

Java8 的时间日期 API

LocalDateTime time1 = LocalDateTime.now();LocalDateTime time2 = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");System.out.println(time1.format(formatter)); //格式化时分秒  2022-04-27 10:04:06System.out.println(LocalDateTime.now()); //2022-04-27T10:04:06.162System.out.println(time1.isAfter(time2)); //比较时间 falseSystem.out.println(time1.isBefore(time2));//比较时间 falseSystem.out.println(time1.plusDays(1L)); //2022-04-28T10:04:06.147System.out.println(time1.minusHours(1L));//加减时间日期 2022-04-27T09:04:06.147System.out.println(LocalDateTime.parse("2021-11-19T15:16:17"));//解析时间 2021-11-19T15:16:17System.out.println(LocalDateTime.of(2019, 11, 30, 15, 16, 17));//指定日期时间 2019-11-30T15:16:17System.out.println(LocalDateTime.now(ZoneId.of("Asia/Jakarta")));//其他时区相对此服务器时区的时间 2022-04-27T09:04:06.166
LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth());//当月第一天 2022-04-01T10:15:54.825LocalDateTime.now().with(TemporalAdjusters.firstDayOfNextMonth());//下个月第一天 2022-05-01T10:15:54.831LocalDateTime.now().with(TemporalAdjusters.dayOfWeekInMonth(2,DayOfWeek.MONDAY));//第N个星期几 2022-04-11T10:15:54.832LocalDateTime.now().with(TemporalAdjusters.next(DayOfWeek.MONDAY));//下个星期几 2022-05-02T10:15:54.834