package Ġcom . lag ar . chat unit bv . util . date Ċ Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . Date Ċ Ċ fun ĠCalendar . toDate (): ĠDate Ġ= Ġtime Ċ fun ĠDate . to Calendar (): ĠCalendar Ġ= ĠCalendar . getInstance (). also Ġ{ ĊĠĠĠ Ġit . time In Millis Ġ= Ġthis . time Ċ } Ċ Ċ fun ĠLong . to Calendar () Ġ= ĠCalendar . getInstance (). also Ġ{ ĊĠĠĠ Ġit . time In Millis Ġ= Ġthis Ċ } Ċ Ċ fun ĠCalendar . copy () Ġ= Ġclone () Ġas ĠCalendar Ċ Ċ /** Ċ Ġ* Ġ@ param Ġmonth Ġstarting Ġfrom Ġ 0 , Ġas Ġ[ Calendar . MONTH ]. Ċ Ġ*/ Ċ fun Ġcalendar ( ĊĠĠĠ Ġyear : ĠInt , ĊĠĠĠ Ġmonth : ĠInt , ĊĠĠĠ Ġdate : ĠInt , ĊĠĠĠ Ġhour OfDay : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġminute : ĠInt Ġ= Ġ 0 , ĊĠĠĠ Ġseconds : ĠInt Ġ= Ġ 0 Ċ ): ĠCalendar Ġ{ ĊĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġcalendar . set ( year , Ġmonth , Ġdate , Ġhour OfDay , Ġminute , Ġseconds ) ĊĠĠĠ Ġreturn Ġcalendar Ċ } Ċ Ċ fun ĠCalendar . year () Ġ= Ġget ( Calendar . YEAR ) Ċ fun ĠCalendar . month () Ġ= Ġget ( Calendar . MONTH ) Ċ fun ĠCalendar . day () Ġ= Ġget ( Calendar . DAY _ OF _ MONTH ) Ċ fun ĠCalendar . minute () Ġ= Ġget ( Calendar . MINUTE ) Ċ fun ĠCalendar . second () Ġ= Ġget ( Calendar . SECOND ) Ċ fun ĠCalendar . day P added () Ġ= Ġ"% 0 1 d ". format ( day ()) Ċ fun ĠCalendar . day OfYear () Ġ= Ġget ( Calendar . DAY _ OF _ YEAR ) Ċ fun ĠCalendar . toDate String () Ġ= Ġ"${ year ()}, Ġ${ month ()}, Ġ${ day () }" Ċ Ċ operator Ġfun ĠCalendar . component 1 () Ġ= Ġyear () Ċ operator Ġfun ĠCalendar . component 2 () Ġ= Ġmonth () Ċ operator Ġfun ĠCalendar . component 3 () Ġ= Ġday () Ċ operator Ġfun ĠCalendar . component 4 () Ġ= Ġminute () Ċ operator Ġfun ĠCalendar . component 5 () Ġ= Ġsecond () Ċ Ċ infix Ġfun ĠCalendar . same Year ( other : ĠCalendar ) Ġ= Ġyear () Ġ== Ġother . year () Ċ infix Ġfun ĠCalendar . same Month ( other : ĠCalendar ) Ġ= Ġmonth () Ġ== Ġother . month () Ċ infix Ġfun ĠCalendar . same Date ( other : ĠCalendar ) Ġ= ĊĠĠĠ Ġsame Year ( other ) Ġ&& Ġsame Month ( other ) Ġ&& Ġ( day () Ġ== Ġother . day ()) Ċ Ċ infix Ġfun ĠDate . same Year ( other : ĠCalendar ) Ġ= Ġto Calendar (). same Year ( other ) Ċ infix Ġfun ĠDate . same Year ( other : ĠDate ) Ġ= Ġsame Year ( other . to Calendar ()) Ċ infix Ġfun ĠDate . same Month ( other : ĠDate ) Ġ= Ġto Calendar (). same Month ( other . to Calendar ()) Ċ infix Ġfun ĠDate . same Date ( other : ĠDate ) Ġ= Ġto Calendar (). same Date ( other . to Calendar ()) Ċ Ċ infix Ġfun ĠCalendar . diff ( end : ĠCalendar ): ĠLong Ġ{ ĊĠĠĠ Ġval ĠstartTime Ġ= Ġtime In Millis ĊĠĠĠ Ġval ĠendTime Ġ= Ġend . time In Millis ĊĠĠĠ Ġreturn ĠendTime Ġ- ĠstartTime Ċ } Ċ Ċ infix Ġfun ĠCalendar . diff In Days ( end : ĠCalendar ): ĠLong Ġ{ ĊĠĠĠ Ġval Ġdiff Time Ġ= Ġdiff ( end ) ĊĠĠĠ Ġreturn Ġdiff Time Ġ/ Ġ( 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 2 4 ) Ċ } Ċ Ċ fun ĠCalendar . add Pure ( field : ĠInt , Ġvalue : ĠInt ): ĠCalendar Ġ= Ġthis . copy (). apply Ġ{ ĊĠĠĠ Ġadd ( field , Ġvalue ) Ċ } Ċ Ċ fun ĠDate . add Pure ( field : ĠInt , Ġvalue : ĠInt ): ĠDate Ġ= Ġto Calendar (). add Pure ( field , Ġvalue ). time Ċ Ċ infix Ġfun ĠCalendar . add Days ( days : ĠInt ): ĠCalendar Ġ= Ġadd Pure ( Calendar . DAY _ OF _ YEAR , Ġdays ) Ċ infix Ġfun ĠCalendar . add Months ( months : ĠInt ): ĠCalendar Ġ= Ġadd Pure ( Calendar . MONTH , Ġmonths ) Ċ infix Ġfun ĠCalendar . add Years ( years : ĠInt ): ĠCalendar Ġ= Ġadd Pure ( Calendar . YEAR , Ġyears ) Ċ Ċ infix Ġfun ĠDate . add Days ( days : ĠInt ): ĠDate Ġ= Ġ( to Calendar () Ġadd Days Ġdays ). time Ċ infix Ġfun ĠDate . add Months ( months : ĠInt ): ĠDate Ġ= Ġ( to Calendar () Ġadd Months Ġmonths ). time Ċ infix Ġfun ĠDate . add Years ( years : ĠInt ): ĠDate Ġ= Ġ( to Calendar () Ġadd Years Ġyears ). time Ċ Ċ infix Ġoperator Ġfun ĠCalendar . minus ( that : ĠCalendar ) Ġ= Ġ( time In Millis Ġ- Ġthat . time In Millis ). to Calendar () Ċ infix Ġoperator Ġfun ĠCalendar . plus ( that : ĠCalendar ) Ġ= Ġ( time In Millis Ġ+ Ġthat . time In Millis ). to Calendar () Ċ infix Ġoperator Ġfun ĠDate . minus ( that : ĠDate ) Ġ= ĠDate ( time Ġ- Ġthat . time ) Ċ infix Ġoperator Ġfun ĠDate . plus ( that : ĠDate ) Ġ= ĠDate ( time Ġ+ Ġthat . time ) Ċ Ċ infix Ġoperator Ġfun ĠCalendar . compareTo ( that : ĠDate ): ĠInt Ġ= Ġ( time In Millis Ġ- Ġthat . time ). toInt () Ċ infix Ġoperator Ġfun ĠCalendar . compareTo ( that : ĠCalendar ): ĠInt Ġ= ĊĠĠĠ Ġ( time In Millis Ġ- Ġthat . time In Millis ). toInt () Ċ Ċ infix Ġoperator Ġfun ĠDate . compareTo ( that : ĠDate ): ĠInt Ġ= Ġ( time Ġ- Ġthat . time ). toInt () Ċ infix Ġoperator Ġfun ĠDate . compareTo ( that : ĠCalendar ): ĠInt Ġ= Ġ( time Ġ- Ġthat . time In Millis ). toInt () Ċ Ċ operator Ġfun ĠCalendar . inc () Ġ= Ġthis Ġadd Days Ġ 1 Ċ operator Ġfun ĠCalendar . dec () Ġ= Ġthis Ġadd Days Ġ- 1 Ċ operator Ġfun ĠDate . inc () Ġ= Ġthis Ġadd Days Ġ 1 Ċ operator Ġfun ĠDate . dec () Ġ= Ġthis Ġadd Days Ġ- 1 Ċ Ċ fun ĠCalendar . is Le ap Year (): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġyear Ġ= Ġget ( Calendar . YEAR ) ĊĠĠĠ Ġif Ġ( year Ġ% Ġ 1 0 0 Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġyear Ġ/= Ġ 1 0 0 ĊĠĠĠ Ġreturn Ġyear Ġ% Ġ 4 Ġ== Ġ 0 Ċ } Ċ Ċ fun ĠCalendar . days In AY ear () Ġ= Ġwhen Ġ( is Le ap Year ()) Ġ{ ĊĠĠĠ Ġtrue Ġ-> Ġ 3 6 6 ĊĠĠĠ Ġelse Ġ-> Ġ 3 6 5 Ċ } Ċ Ċ infix Ġfun ĠCalendar . years Diff ( end : ĠCalendar ): ĠFloat Ġ{ ĊĠĠĠ Ġval Ġyears Ġ= Ġ( year () Ġ- Ġend . year ()). toFloat () ĊĊĠĠĠ Ġval Ġday OfYear Diff Ġ= Ġ( day OfYear () Ġ- Ġend . day OfYear ()) ĊĠĠĠ Ġreturn Ġyears Ġ- Ġday OfYear Diff . toFloat () Ġ/ Ġdays In AY ear (). toFloat () Ċ } Ċ Ċ fun ĠCalendar . time less (): ĠCalendar Ġ= Ġthis . copy (). apply Ġ{ ĊĠĠĠ Ġset ( Calendar . HOUR _ OF _ DAY , Ġ 0 ) ĊĠĠĠ Ġset ( Calendar . MINUTE , Ġ 0 ) ĊĠĠĠ Ġset ( Calendar . SECOND , Ġ 0 ) ĊĠĠĠ Ġset ( Calendar . MILLI SECOND , Ġ 0 ) Ċ } Ċ Ċ fun ĠDate . time less (): ĠDate Ġ= Ġto Calendar (). time less (). time Ċ fun ĠList < Date >. time less (): ĠList < Date > Ġ= Ġmap Ġ{ Ġit . time less () Ġ} Ċ Ċ fun ĠList < Calendar >. limit ( min : ĠCalendar ? Ġ= Ġnull , Ġmax : ĠCalendar ? Ġ= Ġnull ) Ġ= Ġmap Ġ{ ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġmin Ġ!= Ġnull Ġ&& Ġit Ġ< Ġmin Ġ-> Ġmin ĊĠĠĠĠĠĠĠ Ġmax Ġ!= Ġnull Ġ&& Ġit Ġ> Ġmax Ġ-> Ġmax ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList < Date >. limit ( min : ĠDate ? Ġ= Ġnull , Ġmax : ĠDate ? Ġ= Ġnull ) Ġ= Ġmap Ġ{ ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġmin Ġ!= Ġnull Ġ&& Ġit Ġ< Ġmin Ġ-> Ġmin ĊĠĠĠĠĠĠĠ Ġmax Ġ!= Ġnull Ġ&& Ġit Ġ> Ġmax Ġ-> Ġmax ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠList < Date >. isValid ( min : ĠDate ? Ġ= Ġnull , Ġmax : ĠDate ? Ġ= Ġnull ) Ġ= Ġmap Ġ{ ĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġmin Ġ!= Ġnull Ġ&& Ġit Ġ< Ġmin Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġmax Ġ!= Ġnull Ġ&& Ġit Ġ> Ġmax Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĠĠĠ Ġ} Ċ }. all Ġ{ Ġit Ġ} Ċ Ċ fun Ġpretty Print Date ( date : ĠDate ? Ġ= Ġnull ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( date Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcalendar Time Ġ= Ġdate . to Calendar () ĊĊĠĠĠ Ġvar Ġhour Ġ= Ġcalendar Time . get ( Calendar . HOUR ). toString () ĊĠĠĠ Ġvar Ġminute Ġ= Ġcalendar Time . get ( Calendar . MINUTE ). toString () ĊĠĠĠ Ġval Ġam Pm Ġ= Ġif Ġ( calendar Time . get ( Calendar . AM _ PM ) Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" pm " ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ" am " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( hour . toInt () Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhour Ġ= Ġ" 0 $ hour " ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( minute . toInt () Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġminute Ġ= Ġ" 0 $ minute " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġ"$ hour :$ minute Ġ$ am Pm " Ċ Ċ }