如何计算一段时间内的天数?
对于以下Period
计算:
Period.between(LocalDate.of(2015, 8, 1), LocalDate.of(2015, 9, 2))
结果是:
P1M1D
这相当于31天+ 1天= 32天。
本Period
:
Period.between(LocalDate.of(2015, 8, 1), LocalDate.of(2015, 10, 2))
结果是:
P2M1D
这相当于:31天(8月)+ 30天(9月)+ 1(10月)= 62天
java.time
包中是否有一个方法可以给出一个Period
的天数? 我找不到一个。 不确定我是否忽略了任何东西,或者它是否只是在那里。
从文档 :
要使用基于日期的值(年,月,日)定义时间量,请使用
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)
没有办法按你的要求做。 原因是从一个Period
推断出该Period
的实际日历天数是不可能的。 Period
与特定日期无关,一旦按照您显示的方式构建,它将失去对实际日历日期的跟踪。
例如,您的第一个期间代表1个月和1天的期间。 但这个时期并不关心哪一个月。 它只是“一个月,一天”的概念。
如果你需要两个日期之间的天数,你应该使用ChronoUnit.DAYS.between
作为Saket Mittal写道。
根据您想要处理的时间量,有一个特定的对象。 这里的这个页面非常有用,解释哪个最适合您的场景。
当您想要仅在一个单位时间内测量时间量时,ChronoUnit.between方法很有用,例如天或秒
LocalDate localDateStartDate = LocalDate.of(2016, 06, 10); LocalDate localDateEndDate = LocalDate.of(2016,06,23); long days = ChronoUnit.DAYS.between(localDateStartDate, localDateEndDate);