package Ġcom . m ire go . tri kot . foundation . date Ċ Ċ import Ġorg . th reet en . bp . Instant Ċ import Ġorg . th reet en . bp . Offset DateTime . from Ċ import Ġorg . th reet en . bp . Zone Offset Ċ import Ġorg . th reet en . bp . format . DateTime Formatter Ċ import Ġjava . util . Locale Ċ import Ġkotlin . time . Duration Ċ Ċ private Ġval ĠdateFormat Ġ= ĊĠĠĠ ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ' T ' HH : mm : ss ' Z '", ĠLocale . US ) ĊĠĠĠĠĠĠĠ Ġ. with Zone ( Zone Offset . UTC ) Ċ Ċ actual Ġclass ĠDate ( val Ġinstant : ĠInstant ) Ġ{ ĊĠĠĠ Ġactual Ġval Ġepoch : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstant . to Epoch Milli () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġoperator Ġfun Ġplus ( duration : ĠDuration ): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDate ( Instant . of Epoch Milli ( instant . to Epoch Milli () Ġ+ Ġduration . in Whole Milliseconds )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġoperator Ġfun Ġcompare To ( other : ĠDate ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDate Helper . compare ( this , Ġother ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDate Helper . equals ( this , Ġother ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġto ISO 8 6 0 1 (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠdateFormat . format ( instant ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġcompanion Ġobject ĠDate Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġactual Ġval Ġnow : ĠDate Ġget () Ġ= ĠDate ( Instant . now ()) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠdateTime Formatter Ġ= ĠDateTime Formatter . ISO _ OFFSET _ DATE _ TIME ĊĊĠĠĠĠĠĠĠ Ġactual Ġfun Ġfrom ISO 8 6 0 1 ( iso Date : ĠString ): ĠDate Ġ= ĠDate ( dateTime Formatter . parse ( iso Date ) Ġ{ Ġfrom ( it ) Ġ}. to Instant ()) ĊĊĠĠĠĠĠĠĠ Ġactual Ġfun Ġfrom Epoch Millis ( epoch : ĠLong ): ĠDate Ġ= ĠDate ( Instant . of Epoch Milli ( epoch )) ĊĠĠĠ Ġ} Ċ } Ċ