徐州泉山建设局网站,阿里巴巴手工活加工平台,哪些网站可以做详情页,四川网站建设培训学校阅读建议
嗨#xff0c;伙计#xff01;刷到这篇文章咱们就是有缘人#xff0c;在阅读这篇文章前我有一些建议#xff1a;
本篇文章大概2900多字#xff0c;预计阅读时间长需要3分钟。本篇文章的实战性、理论性较强#xff0c;是一篇质量分数较高的技术干货文章#x…
阅读建议
嗨伙计刷到这篇文章咱们就是有缘人在阅读这篇文章前我有一些建议
本篇文章大概2900多字预计阅读时间长需要3分钟。本篇文章的实战性、理论性较强是一篇质量分数较高的技术干货文章建议收藏起来方便时常学习与回顾温故而知新。创作不易免费的点赞、关注请走上一走算是对博主一些鼓励让我更有动力输出更多的干货内容。 注意
本文编写的单元测试是基于java11具体的版本号是11.0.19
Period
在Java中Period类是用于表示时间段或周期的类。它通常用于日期和时间的计算和操作可以方便地处理年、月、日等时间单位。下面是一个如何定义Period的示例
Test
public void test() {Period period Period.of(1, 1, 1);//获得一个表示一年一个月一天的时间段LocalDate localDate LocalDate.of(2023, 1, 1);LocalDate plus localDate.plus(period);//计算当前日期加上指定的时间段后的日期System.out.println(plus);//输出结果2024-02-02Period period1 Period.ofYears(1);//获得一个表示一年的时间段Period period2 Period.ofMonths(12);//获得一个表示十二个月的时间段Period period3 Period.ofDays(30);//获得一个表示三十天的时间段Period period4 Period.ofWeeks(1);//获得一个表示两周的时间段
}
核心方法
Period的核心方法包括
Period.of(LocalDate startDate, LocalDate endDate)创建一个表示给定时间段的Period对象。Period.between(LocalDate startDate, LocalDate endDate)创建一个表示给定时间段的Period对象与起始日期和结束日期的时间顺序无关。Period.getYears()返回时间段中的年数。Period.getMonths()返回时间段中的月数。Period.getDays()返回时间段中的天数。Period.plus(Period period)将给定的Period对象加到当前Period对象上返回一个新的Period对象。Period.minus(Period period)将给定的Period对象从当前Period对象中减去返回一个新的Period对象。Period.between(LocalDateTime startDateTime, LocalDateTime endDateTime)创建一个表示给定时间段的Period对象与起始日期和结束日期的时间顺序无关。
Test
public void test1() {LocalDate localDate1 LocalDate.of(2022, 1, 1);LocalDate localDate2 LocalDate.of(2023, 12, 1);Period period Period.between(localDate1, localDate2);System.out.println(period.getYears());//输出结果1System.out.println(period.getMonths());//输出结果11System.out.println(period.getDays());//输出结果0注意这里的结果是对应的年、月、日的字段的值的差与起始日期和结束日期的时间顺序无关//如果想要获取两个日期之间的差是多少天可以这样long days localDate1.until(localDate2, ChronoUnit.DAYS);System.out.println(days);//输出结果699
}
Period#plus(...)该方法接受一个Period对象作为参数并将其加到当前Period对象上返回一个新的Period对象。
Test
public void test2() {Period period Period.ofYears(1);//获得一个表示一年的时间段period.plus(Period.ofYears(1));//计算当前时间段加上一个1年时间后的时间段period.plusYears(1);//计算当前时间段加上一个1年时间后的时间段period.plusMonths(12);//计算当前时间段加上一个12个月时间后的时间段period.plusDays(365);//计算当前时间段加上一个365天时间后的时间段
}
Period#minus(...)该方法也接受一个Period对象作为参数但它将从当前Period对象中减去给定的Period对象返回一个新的Period对象。
Test
public void test3() {Period period Period.ofYears(1);//获得一个表示一年的时间段period.minus(Period.ofYears(1));//计算当前时间段减去一个1年时间后的时间段period.minusYears(1);//计算当当前时间段减去一个1年时间周期后的时间段period.minusMonths(12);//计算当前时间段减去一个12个月时间周期后的时间段period.minusDays(365);//计算当前时间段减去一个365天时间周期后的时间段
}
使用场景
Period类通常在需要表示和操作年、月、日等较大时间单位的情况下使用。例如在日历应用程序中可以使用Period类来计算两个日期之间的差值或者在计划任务中可以使用Period类来表示一个任务需要执行的时间段。此外Period类还可以用于日期时间的格式化和解析以及进行日历计算等操作。
总结
Period类的优点包括
易于使用Period类提供了许多简便的方法来操作时间段例如plus()、minus()、multiply()、divide()等使得操作变得更加简单。适合表示较大时间单位与Duration类相比Period类更适合表示年、月、日等较大的时间单位因为它的粒度更粗不会因为纳秒等较小的单位而产生精度问题。
Period类的缺点包括
精度问题Period类的比较粒度较粗只能精确到天、月、年等较大的单位对于需要更高精度的时间段例如毫秒、纳秒等Period类无法满足需求。不支持时区Period类没有提供时区支持因此在处理涉及不同时区的日期时间时Period类无法很好地处理。无法表示时间点的具体数值Period类只能表示时间段无法表示时间点的具体数值例如当前的日期和时间等。
总之Period类适用于需要表示和操作年、月、日等较大时间单位的情况但在需要更高精度的时间段或者涉及不同时区的日期时间处理时需要考虑使用其他类库。 上一篇深入了解Java8新特性-日期时间API之ChronoUnit、ChronoField-CSDN博客