package Ġcom . android . ready edit text . util Ċ Ċ import Ġandroid . app . DatePicker Dialog Ċ import Ġandroid . content . Context Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . joda . time . DateTime Zone Ċ Ċ class ĠDate Util Ġ{ ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġdate Select ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Delegate : ĠDateTime Delegate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate : ĠDateTime ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate TimeZone : ĠDateTime Zone ? ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Calendar Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Delegate Ġ= ĠdateTime Delegate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtime Select ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Delegate : ĠDateTime Delegate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate : ĠDateTime ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Calendar Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Delegate Ġ= ĠdateTime Delegate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġshow Calendar Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Delegate : ĠDateTime Delegate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate : ĠDateTime ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone : ĠDateTime Zone ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateTime Ġ= Ġwhen Ġ( date ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠDateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Picker Dialog Ġ= ĠDate Picker Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġ{ Ġ_, Ġyear , Ġmonth , Ġday OfMonth Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Delegate . on Selected ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected DateTime Ġ= ĠDateTime ( time Zone ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Year ( year ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Month OfYear ( month ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Day OfMonth ( day OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime Delegate . on Selected ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected DateTime Ġ= ĠDateTime () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Year ( year ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Month OfYear ( month ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Day OfMonth ( day OfMonth ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . year , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . month OfYear , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . day OfMonth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Picker Dialog . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Dismiss Listener Ġ{ ĠdateTime Delegate . on Cancel () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Picker Dialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠDateTime Delegate Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Selected ( selected DateTime : ĠDateTime ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠTime Delegate Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Selected ( hour : ĠInt , Ġsecond : ĠInt ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Cancel () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġis After Now Mid Night ( ĊĠĠĠ ĠdateTime : ĠDateTime , ĊĠĠĠ Ġdate TimeZone : ĠDateTime Zone Ġ= ĠDateTime Zone . getDefault () Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġdate Of The Day Ġ= ĠDateTime ( dateTime Zone ) ĊĠĠĠĠĠĠĠ Ġ. with Hour OfDay ( 2 3 ) ĊĠĠĠĠĠĠĠ Ġ. with Minute Of Hour ( 5 9 ) ĊĠĠĠĠĠĠĠ Ġ. with Second Of Minute ( 5 9 ) ĊĊĠĠĠ Ġreturn ĠdateTime . is After ( date Of The Day ) Ċ } Ċ Ċ fun Ġis After Now ( ĊĠĠĠ ĠdateTime : ĠDateTime , ĊĠĠĠ Ġdate TimeZone : ĠDateTime Zone Ġ= ĠDateTime Zone . getDefault () Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġdate Of The Day Ġ= ĠDateTime ( dateTime Zone ) ĊĠĠĠ Ġreturn ĠdateTime . is After ( date Of The Day ) Ċ } Ċ Ċ fun Ġis Now Now Start Hour Of The Day ( ĊĠĠĠ ĠdateTime : ĠDateTime , ĊĠĠĠ Ġdate TimeZone : ĠDateTime Zone Ġ= ĠDateTime Zone . getDefault () Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġdate Of The Day Ġ= ĠDateTime ( dateTime Zone ) ĊĠĠĠĠĠĠĠ Ġ. with Hour OfDay ( 0 ) ĊĠĠĠĠĠĠĠ Ġ. with Minute Of Hour ( 0 ) ĊĠĠĠĠĠĠĠ Ġ. with Second Of Minute ( 0 ) ĊĊĠĠĠ Ġreturn ĠdateTime . is Before ( date Of The Day ) Ċ } Ċ Ċ fun Ġis Before Now ( ĊĠĠĠ ĠdateTime : ĠDateTime , ĊĠĠĠ Ġdate TimeZone : ĠDateTime Zone Ġ= ĠDateTime Zone . getDefault () Ċ ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġdate Of The Day Ġ= ĠDateTime ( dateTime Zone ) ĊĠĠĠ Ġreturn ĠdateTime . is Before ( date Of The Day ) Ċ }