对于以下Period.between(LocalDate.of(2015, 8, 1), LocalDate.of(2015, 9, 2))
计算:
P1M1D
结果是:
Period
这相当于31天+ 1天= 32天。
对于此Period.between(LocalDate.of(2015, 8, 1), LocalDate.of(2015, 10, 2))
:
P2M1D
结果是:
java.time
这相当于:31天(8月)+ 30天(9月)+ 1(10月)= 62天
Period
包中是否有一个方法可以给出if(mViewpager.getTag().equals("portrait"))
// is in portrait
else
// is in landscape
中的天数?我找不到一个。不确定我是否忽略了任何东西,或者它是否只是在那里。
答案 0 :(得分:68)
使用基于日期的值定义时间量(年,月, 天),使用
Period
课程。Period
类提供各种get 方法,例如getMonths
,getDays
和getYears
。要显示在单个时间单位(例如天)内测量的时间量>您可以使用ChronoUnit.between
方法。LocalDate today = LocalDate.now(); LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1); Period p = Period.between(birthday, today); long p2 = ChronoUnit.DAYS.between(birthday, today); System.out.println("You are " + p.getYears() + " years, " + p.getMonths() + " months, and " + p.getDays() + " days old. (" + p2 + " days total)");
代码生成类似于以下内容的输出:
You are 53 years, 4 months, and 29 days old. (19508 days total)
答案 1 :(得分:15)
没有办法按你的要求做。原因是Period
无法推断出该期间的实际日历天数。 Period
与特定日期无关,一旦按照您展示的方式构建,就会失去对实际日历日期的跟踪。
例如,您的第一个期间代表1个月和1天的期间。但这个时期并不关心哪一个月。这只是“一个月,一天”的概念。
如果你需要两个日期之间的天数,你应该使用ChronoUnit.DAYS.between
作为Saket Mittal写的。
答案 2 :(得分:4)
根据您想要处理的时间量,有一个特定的对象。 这个页面here非常有用,可以解释哪种情况最适合您的情况。
当您想要仅在一个单位时间内测量一段时间时,ChronoUnit.between方法非常有用
LocalDate localDateStartDate = LocalDate.of(2016, 06, 10);
LocalDate localDateEndDate = LocalDate.of(2016,06,23);
long days = ChronoUnit.DAYS.between(localDateStartDate, localDateEndDate);