对于以下Period计算:
Period.between(LocalDate.of(2015, 8, 1), LocalDate.of(2015, 9, 2))
Run Code Online (Sandbox Code Playgroud)
结果是:
P1M1D
Run Code Online (Sandbox Code Playgroud)
这相当于31天+ 1天= 32天.
为此Period:
Period.between(LocalDate.of(2015, 8, 1), LocalDate.of(2015, 10, 2))
Run Code Online (Sandbox Code Playgroud)
结果是:
P2M1D
Run Code Online (Sandbox Code Playgroud)
这相当于:31天(8月)+ 30天(9月)+ 1(10月)= 62天
包中是否有一个方法java.time可以给出一个天数Period?我找不到一个.不确定我是否忽略了任何东西,或者它是否只是在那里.
Sak*_*tal 76
从文档:
要使用基于日期的值(年,月,日)定义时间量,请使用
Period该类.的Period类提供各种获取方法,例如getMonths,getDays,和getYears.要呈现在时间的单个单元,测量的时间量>如天,可以使用ChronoUnit.between方法.Run Code Online (Sandbox Code Playgroud)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)");代码生成类似于以下内容的输出:
Run Code Online (Sandbox Code Playgroud)You are 53 years, 4 months, and 29 days old. (19508 days total)
K E*_*son 19
没有办法做你所要求的.原因是a不可能Period推断出该期间的实际日历天数.A Period与特定日期无关,一旦按照您显示的方式构建,它将失去对实际日历日期的跟踪.
例如,您的第一个期间代表1个月和1天的期间.但这个时期并不关心哪一个月.它只是"一个月,一天"的概念.
如果您需要两个日期之间的天数,您应该使用ChronoUnit.DAYS.betweenSaket Mittal写道.
有一个特定的对象取决于您要处理的时间。这页这里是非常有用的解释这是最适合您的方案。
当您只想在单个时间单位(例如天或秒)中测量时间量时,ChronoUnit.between方法很有用
LocalDate localDateStartDate = LocalDate.of(2016, 06, 10);
LocalDate localDateEndDate = LocalDate.of(2016,06,23);
long days = ChronoUnit.DAYS.between(localDateStartDate, localDateEndDate);
Run Code Online (Sandbox Code Playgroud)