建设网站的页面设计,开发一个网站需要多长时间,wordpress 不漂亮,企业网站建设背景目录 年初年末月初月末3. 日初日末 记录日常开发中的常用的日期转换代码#xff0c;算是一篇Java 8时间API使用实操的简短总结文。
下文中#xff0c;都以LocalDateTime为例#xff0c;在不声明的情况下如下方法一般都适用于Java8中LocalDate、LocalDateTime、OffsetDateTi… 目录 年初年末月初月末3. 日初日末 记录日常开发中的常用的日期转换代码算是一篇Java 8时间API使用实操的简短总结文。
下文中都以LocalDateTime为例在不声明的情况下如下方法一般都适用于Java8中LocalDate、LocalDateTime、OffsetDateTime、ZonedDateTime等时间类不适用某些类时会在文中有提醒。 年初年末
使用TemporalAdjusters工具类。 TemporalAdjusters.firstDayOfYear()将月份和日期调整至1月1日TemporalAdjusters.lastDayOfYear()将月份和日期调整至12月31日TemporalAdjusters.firstDayOfMonth()将月份调整至当月的第一天1TemporalAdjusters.lastDayOfMonth()将月份调整至当月的最后一天28-31TemporalAdjusters.firstDayOfNextMonth()将月份和日期调整为下个月的第一天TemporalAdjusters.firstDayOfNextYear()将年份和日期调整为下一年的第一天 LocalDateTime.now().with(TemporalAdjusters.firstDayOfYear()); // 2023-01-01T14:11:27.062使用with、adjustInto方法通过TemporalAdjuster的实现类比如使用MonthDay来调整时间。后面的调整日期、时分秒都可以借鉴下面的方法来实现。
MonthDay lastDayOfMonth MonthDay.of(12, 31);
LocalDateTime with LocalDateTime.now().with(lastDayOfMonth);
// 等价于
LocalDateTime adjustInto (LocalDateTime) lastDayOfMonth.adjustInto(LocalDateTime.now());月初月末
使用TemporalAdjusters
LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()); // 2023-10-31T14:34:01.958通过ChronoField类实现 这种方法只能用来计算月初。年月也可以通过这种方式来实现不过有了MonthDay就没有必要那么麻烦了。
LocalDateTime with LocalDateTime.now().with(ChronoField.DAY_OF_MONTH, 1);通过YearMonth类实现 与计算年初、年末、月初不同月末是一个浮动值28-31需要根据是否是闰年是年份的第几个月来最终确认月末值手工实现比较麻烦。不过Java8中有很多类已经完成了这类计算。
比如使用YearMonth自带的月初月末计算
YearMonth yearMonth YearMonth.now();
// 当然月初也可以用这种形式不过也挺麻烦的
LocalDate startOfMonth yearMonth.atDay(1);
LocalDate endOfMonth yearMonth.atEndOfMonth();
boolean leapYear yearMonth.isLeapYear();YearMonth的方法可能并不能直接得到想要的结果需要我们再转换一次时间
LocalDateTime now LocalDateTime.now();
LocalDateTime with now.with(YearMonth.from(now).atDay(1));
LocalDateTime adjustInto (LocalDateTime) YearMonth.from(now).atEndOfMonth().adjustInto(now);3. 日初日末
日初日末也没那么花俏了值都是固定不变的日初就是00:00:00.000日末就是23:59:59.999with、adjustInto方法随便用能达成目标即可。
使用LocalDate.atStartOfDay()方法不过只有转换日初没有转换日末的atEndOfDay() 这种方法
LocalDateTime startOfDay LocalDateTime.now().toLocalDate().atStartOfDay();
LocalDateTime startOfDay1 LocalDate.now().atStartOfDay();使用LocalDate.atTime()设置具体时间。
LocalDateTime min LocalDate.now().atTime(LocalTime.MIN); // 2023-09-22T00:00 | min 00:00
LocalDateTime max LocalDate.now().atTime(LocalTime.MAX); // 2023-09-22T23:59:59.999999999 | max 23:59:59.999999999其他方法。
// 当然也可以这样
LocalDateTime min LocalDateTime.now().with(LocalTime.MIN);
// 这样
LocalDateTime atDate LocalTime.MAX.atDate(LocalDateTime.now().toLocalDate());
// 甚至你也可以直接设置时间
LocalDateTime with LocalDateTime.now().with(LocalTime.of(0, 0, 0));
LocalDateTime adjustInto (LocalDateTime) LocalTime.of(23, 59, 59).adjustInto(LocalDateTime.now());简单总结了下日常碰到的Java8用得到的方法。欢迎补充评论谢谢