繁体   English   中英

Joda期间年月日

[英]Joda Period in year month day

我正在使用以下代码来区分年,月,日中的2个日期

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但实际结果是年份是: - 4个月是 - :0天是 - :28

请提供解决方案

你可以尝试改变

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);

即使你已经回答了Rahul,我也可以提供更具视觉吸引力的代码(因为问题和答案都有点混乱):

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

您需要将期间类型指定为年 - 月 - 日,因为标准类型( 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

您可以使用Period.ofjava.time.Period

public Period getPeriodForMonthsAndDays(int monthsCount, int daysCount) {
    return Period.of(0, monthsCount, daysCount);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM