Period类

Period类用于使用 ISO-8601 周期格式 PnYnMnD 和 PnW 中基于日期的值来表示时间量。
例如,P20Y2M25D字符串表示 20 年 2 个月和 25 天。

这段时间可以通过不同的方式获得。

Period.between()

大部分Period用于表示两个日期之间的时间段(例如,两个LocalDate实例之间)。

LocalDate startLocalDate = LocalDate.of(2020, 3, 12);
LocalDate endLocalDate = LocalDate.of(2020, 7, 20);
Period periodBetween = Period.between(startLocalDate, endLocalDate);
System.out.println(periodBetween);	// P4M8D - 4 months and 8 days
System.out.println(periodBetween.getDays());		//8
System.out.println(periodBetween.getMonths());		//4
System.out.println(periodBetween.getYears());		//0
System.out.println(periodBetween.get(ChronoUnit.DAYS));	//8

Period.ofDays()

Period类使用以下方法来表示不同单位的时间段:

  • ofDays(int days) - 表示天数的周期。
  • ofMonths(int Months) - 代表月份数的期间。
  • ofWeeks(int week) - 表示周数的周期。
  • ofYears(int years) - 代表若干年的期间。
Period fromDays = Period.ofDays(150);	// 150 days
Period fromMonths = Period.ofMonths(4);	// 4 months
Period fromYears = Period.ofYears(10);	// 10 years
Period fromWeeks = Period.ofWeeks(15);	// 15 weeks

Period.of()

使用of(int years, int Month, int days),我们可以得到一个基于年、月和日的实例。

//20 years, 3 months and 20 days
Period periodFromUnits = Period.of(20, 3, 20);

Period.parse()

Period可以从包含 ISO-8601 周期格式的 String中获得。

//20 years, 3 months and 20 days
Period periodFromString1 = Period.parse("P20Y3M20D");
//365 Days
Period periodFromString2 = Period.parse("P365D");
//52 Weeks
Period periodFromString3 = Period.parse("P52W");

修改 Period值

我们可以从给定的“Period”对象中添加或者减去一段时间。
支持加减的方法有:

  • plus(period) - 返回添加了指定期间的给定期间的副本。
  • plusYears() - 返回添加了指定年份的给定期间的副本。
  • plusMonths() - 返回添加了指定月份的给定期间的副本。
  • plusDays() - 返回添加了指定天数的给定时间段的副本。
  • minus(period) - 返回给定期间减去指定期间的副本。
  • minusYears() - 返回给定期间减去指定年份的副本。
  • minusMonths() - 返回给定期间减去指定月份的副本。
  • minusDays() - 返回给定期间减去指定天数的副本。
  • multipliedBy(scalar) - 返回一个新实例,该实例中的每个元素都乘以指定的标量。
Period period = Period.ofDays(5);
Period periodDaysAdded = period.plus(5);
Period periodPlus1Year = period.plusYears(1L);
Java Period类
www. On IT Road .com

获取Period值

Period 值可以通过 getter 方法获得:

  • Period.getDays() - 获取此期间的天数。
  • Period.getMonths() - 获取此期间的月数。
  • Period.getYears() - 获取该时期的年数。
  • Period.get(TemporalUnit unit) - 获取请求单位的值。请注意,支持的单位是 YEARS、MONTHS 和 DAYS。所有其他单元抛出一个 UnsupportedTemporalTypeException
LocalDate startLocalDate = LocalDate.of(2020, 3, 12);
LocalDate endLocalDate = LocalDate.of(2020, 7, 20);
Period periodBetween = Period.between(startLocalDate, endLocalDate);
System.out.println(periodBetween.getDays());		//8
System.out.println(periodBetween.getMonths());		//4
System.out.println(periodBetween.getYears());		//0
System.out.println(periodBetween.get(ChronoUnit.DAYS));	//8
//Throws UnsupportedTemporalTypeException
System.out.println(periodBetween.get(ChronoUnit.WEEKS));
日期:2020-09-17 00:09:40 来源:oir作者:oir