package Ġcom . android . wcf . helper ĊĊ Ċ import Ġjava . text . DateFormat Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . math . absolute Value ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġj w con a 0 5 1 0 Ġon Ġ 6 / 1 6 / 1 7 . Ċ Ġ*/ Ċ Ċ const Ġval ĠISO _ 1 8 6 0 _ W _ TIME _ ZONE Ġ= Ġ" yyyy - MM - dd ' T ' HH : mm : ss ZZ Z " Ċ const Ġval ĠMM _ DD _ HH _ MM _ SS _ MMM Ġ= Ġ" MM - dd ĠHH : mm : ss . SS S " ĊĊ Ċ const Ġval ĠM ILL IS _ IN _ HOUR : ĠInt Ġ= Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ċ const Ġval ĠM ILL IS _ IN _ MINUTE : ĠInt Ġ= Ġ 1 0 0 0 Ġ* Ġ 6 0 Ċ const Ġval ĠM ILL IS _ IN _ SECOND : ĠInt Ġ= Ġ 1 0 0 0 Ċ Ċ const Ġval ĠHO UR _ IND X Ġ= Ġ 0 Ċ const Ġval ĠMIN _ IND X Ġ= Ġ 1 Ċ const Ġval ĠSE C _ IND X Ġ= Ġ 2 Ċ const Ġval ĠMIL LI _ IND X Ġ= Ġ 3 Ċ Ċ class ĠDateTime Helper Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDAY _ IN _ MS : ĠLong Ġ= Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 2 4 ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġdate Week Ago (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDate ( Date (). getTime () Ġ- Ġ( 7 Ġ* ĠDAY _ IN _ MS )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Now Long (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġint To User Readable Time ( i : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimes Ġ= Ġgenerate Time Units Array ( i . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgenerate Ui Time String ( times ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġint To Readable Time ( i : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimes Ġ= Ġgenerate Time Units Array ( i . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgenerate Time String ( times ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlong To Readable Time ( l : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimes Ġ= Ġgenerate Time Units Array ( l ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgenerate Time String ( times ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġgenerate Time Units Array ( l : ĠLong ): ĠLong Array Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Units Ġ= ĠLong Array ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Units [ HOUR _ IND X ] Ġ= Ġl Ġ/ ĠM ILL IS _ IN _ HOUR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Units [ MIN _ IND X ] Ġ= Ġ( l Ġ% ĠM ILL IS _ IN _ HOUR ) Ġ/ ĠM ILL IS _ IN _ MINUTE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Units [ SEC _ IND X ] Ġ= Ġ( l Ġ% ĠM ILL IS _ IN _ MINUTE ) Ġ/ ĠM ILL IS _ IN _ SECOND ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Units [ MILLI _ IND X ] Ġ= Ġl Ġ% ĠM ILL IS _ IN _ SECOND ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtime Units ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġgenerate Time String ( time Units : ĠLong Array ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhours Ġ= Ġtime Units [ HOUR _ IND X ]. absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġtime Units [ MIN _ IND X ]. absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġtime Units [ SEC _ IND X ]. absolute Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmillis Ġ= Ġtime Units [ MILLI _ IND X ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( if Ġ( millis Ġ< Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmillis Ġ= Ġmillis . absolute Value ; Ġ"-" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( if Ġ( hours Ġ< Ġ 1 0 ) Ġ" 0 " Ġ+ Ġhours . toString () Ġelse Ġhours . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( if Ġ( minutes Ġ< Ġ 1 0 ) Ġ" 0 " Ġ+ Ġminutes . toString () Ġelse Ġminutes . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( if Ġ( seconds Ġ< Ġ 1 0 ) Ġ" 0 " Ġ+ Ġseconds . toString () Ġelse Ġseconds . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (".") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( when Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( millis Ġ< Ġ 1 0 ) Ġ-> Ġ" 0 0 " Ġ+ Ġmillis . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( millis Ġ< Ġ 1 0 0 ) Ġ-> Ġ" 0 " Ġ+ Ġmillis . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmillis . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġgenerate Ui Time String ( time Units : ĠLong Array ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhours Ġ= Ġtime Units [ HOUR _ IND X ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġtime Units [ MIN _ IND X ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġtime Units [ SEC _ IND X ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Hours Ġ= Ġhours Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Minutes Ġ= Ġminutes Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Seconds Ġ= Ġseconds Ġ>= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Hours ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( hours . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Minutes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( if Ġ( minutes Ġin Ġ 1 .. 9 ) Ġ" 0 " Ġ+ Ġminutes . toString () Ġelse Ġminutes . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" 0 0 "). append (": ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( if Ġ( seconds Ġ< Ġ 1 0 ) Ġ" 0 " Ġ+ Ġseconds . toString () Ġelse Ġseconds . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġobtain Date For Now (): ĠString Ġ= Ġlong To Readable Date ( System . currentTimeMillis ()) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Date For Now (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time In Millis Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcal . time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġyesterday (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . add ( Calendar . DATE , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcal . time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlong To Readable Date ( l : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal : ĠCalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time In Millis Ġ= Ġl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate : ĠDate Ġ= Ġcal . time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Form : ĠDate Format Ġ= ĠSimpleDateFormat . get DateTime Instance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate Form . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġobtain ISO 8 6 0 1 Date For Now (): ĠString Ġ= Ġlong To ISO 8 6 0 1 ( System . currentTimeMillis ()) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġobtain obtain ISO 8 6 0 1 Date ( l : ĠLong ) Ġ= Ġlong To ISO 8 6 0 1 ( l ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġlong To ISO 8 6 0 1 ( l : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time In Millis Ġ= Ġl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate : ĠDate Ġ= Ġcal . time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat ( ISO _ 1 8 6 0 _ W _ TIME _ ZONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠdateFormat . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġobtain Debugging Date ( l : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time In Millis Ġ= Ġl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate : ĠDate Ġ= Ġcal . time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat ( MM _ DD _ HH _ MM _ SS _ MMM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠdateFormat . format ( date ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġobtain Debugging Date For Now () Ġ= Ġobtain Debugging Date ( System . currentTimeMillis ()) ĊĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcalc Time Diff From Now ( event Time : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSystem . currentTimeMillis () Ġ- Ġevent Time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Utc Off et For local (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTime Zone . getDefault (). get Offset ( System . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }