2013-12-22 4 views
1

я использую следующий код, чтобы получить разницу между 2 датами в году, месяц, деньJoda Период в год месяц день

tenAppDTO.getTAP_PROPOSED_START_DATE()=2009-11-01 
tenAppDTO.getTAP_PROPOSED_END_DATE()=2013-11-29                   
ReadableInstant r=new DateTime(tenAppDTO.getTAP_PROPOSED_START_DATE()); 
ReadableInstant r1=new DateTime(tenAppDTO.getTAP_PROPOSED_END_DATE()); 
Period period = new Period(r, r1); 
period.normalizedStandard(PeriodType.yearMonthDay()); 
years = period.getYears(); 
month=period.getMonths(); 
day=period.getDays(); 
out.println("year is-:"+years+"month is -:"+ month+"days is -:"+ day); 

с помощью выше коды я получаю результат года это-: 4 месяца -: 0 дней -: 0 но фактический результат в год IS-: 4 месяца -: 0 дней -: 28

Просьбы предоставить решение

ответ

3

Вы можете попытаться изменить

Period period = new Period(r, r1); 

с

Period period = new Period(r, r1, PeriodType.yearMonthDay()); 

Вы можете попробовать так:

tenAppDTO.getTAP_PROPOSED_START_DATE()=2009-11-01 
tenAppDTO.getTAP_PROPOSED_END_DATE()=2013-11-29                   
ReadableInstant r=new DateTime(tenAppDTO.getTAP_PROPOSED_START_DATE()); 
ReadableInstant r1=new DateTime(tenAppDTO.getTAP_PROPOSED_END_DATE()); 
Period period = new Period(r, r1, PeriodType.yearMonthDay()); //Change here 
period.normalizedStandard(PeriodType.yearMonthDay()); 
years = period.getYears(); 
month=period.getMonths(); 
day=period.getDays(); 
out.println("year is-:"+years+"month is -:"+ month+"days is -:"+ day); 
+2

Спасибо вам большое! – nakul

+1

@nakul: - Добро пожаловать! –

+0

@RahulTripathi Не могли бы вы объяснить, как ** новый период (r, r1, день); ** работал? зачем нам включать в него день? – Keerthivasan

0

Даже ты Рахул уже ответил, я могу предоставить немного больше визуально привлекательным код (как и вопрос, и ответ немного грязный):

DateTime date1 = new DateTime(2009, 11, 01, 00, 00); 
DateTime date2 = new DateTime(2013, 11, 29, 00, 00); 
Period period = new Period(date1, date2, PeriodType.yearMonthDay()); 
System.out.println("Y: " + period.getYears() + ", M: " + period.getMonths() + 
     ", D: " + period.getDays()); 
// => Y: 4, M: 0, D: 28 

Вы должны указать тип периода, как год-месяц-день как STA ndard типа (PeriodType.standard()) основан на год-месяц- неделю -день -... и разница в день на указанные даты ровно 4 недели:

Period period = new Period(date1, date2, PeriodType.standard()); 
System.out.println("Y: " + period.getYears() + ", M: " + period.getMonths() + 
     ", W: " + period.getWeeks() + ", D: " + period.getDays()); 
// => Y: 4, M: 0, W: 4, D: 0 
0

Вы можете использовать Period.of из java.time.Period

public Period getPeriodForMonthsAndDays(int monthsCount, int daysCount) { 
    return Period.of(0, monthsCount, daysCount); 
} 
Смежные вопросы