[threeten-dev] incompatibility issues between MinguoDate.minus(Period) and MinguoDate.periodUntil(MinguoDate)

patrick zhang patrick.zhang at oracle.com
Thu Feb 28 00:33:09 PST 2013


The same problem happens for LocalDate also.
I guess it is caused by difference between Period of Duration. It works 
as expected when I use Duration to replace Period to define one accurate 
period.

Regards
Patrick

On 2013-2-28 16:25, patrick zhang wrote:
> Hi Team,
>
> As you know, MinguoDate.minus(Period) will return one new MinguoDate 
> while MinguoDate.periodUntil(MinguoDate) will calculate the period 
> between 2 date.
> so I think:
> if
>    minguodate2 = minguodate1.minus(period) ;
> then
>    minguodate2.periodUntil(minguodate1) = period.
>
> I write sample code to check it. It looks sometime it works but 
> sometimes it fails.
> You can see date3 and date4 work as expected while data1 and date2 
> look strange.
>
> I know it is caused by different length of months. And Period class 
> will do something to match it. But I am really a bit confused by the 
> output. Is it correct behavior?
>
> Code:
> =============================
>         MinguoDate date1 = MinguoDate.of(1970, 1, 1) ;
>        Period p = Period.of(1, 1, 1) ;
>        MinguoDate date2 = date1.minus(p) ;                
> System.out.println(p) ;
>        System.out.println(date2.periodUntil(date1)) ;
>              System.out.println("**************") ;
>        MinguoDate date3 = MinguoDate.of(1970, 5, 3) ;
>        MinguoDate date4 = date3.minus(p) ;                
> System.out.println(p) ;
>        System.out.println(date4.periodUntil(date3)) ;
> ===============================
>
> Output:
> ===============================
> P1Y1M1D
> P1Y1M2D
> **************
> P1Y1M1D
> P1Y1M1D
> ===============================
>
> Regards
> Patrick
>


More information about the threeten-dev mailing list