package Ġv ip . m yst ery 0 . tools . kotlin . utils Ċ Ċ import Ġjava . sql . Timestamp Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Id Ċ Ċ /** Ċ Ġ* Ġæ¯ « ç§Ĵ è½¬ åĮĸ æĹ¶ åĪĨ ç§Ĵ æ¯ « ç§Ĵ Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ enum Ġclass ĠTimeUnit ( val Ġlevel : ĠInt , Ġval Ġunit : ĠString , Ġval Ġinterval : ĠInt ) Ġ{ ĊĠĠĠ ĠMIL LI SECOND ( 0 , Ġ" æ¯ « ç§Ĵ ", Ġ 1 0 0 0 ), ĊĠĠĠ ĠSE COND ( 1 , Ġ" ç§Ĵ ", Ġ 6 0 ), ĊĠĠĠ ĠMIN UTE ( 2 , Ġ" åĪĨ ", Ġ 6 0 ), ĊĠĠĠ ĠHO UR ( 3 , Ġ" å°ı æĹ¶ ", Ġ 2 4 ), ĊĠĠĠ ĠDAY ( 4 , Ġ" å¤© ", Ġ 1 ) Ċ } Ċ Ċ private Ġfun Ġget TimeUnit By Level ( level : ĠInt ): ĠTimeUnit ? Ġ= Ġwhen Ġ( level ) Ġ{ ĊĠĠĠĠ 0 Ġ-> ĠTimeUnit . MILLI SECOND ĊĠĠĠĠ 1 Ġ-> ĠTimeUnit . SECOND ĊĠĠĠĠ 2 Ġ-> ĠTimeUnit . MINUTE ĊĠĠĠĠ 3 Ġ-> ĠTimeUnit . HOUR ĊĠĠĠĠ 4 Ġ-> ĠTimeUnit . DAY ĊĠĠĠ Ġelse Ġ-> Ġnull Ċ } Ċ Ċ fun ĠLong . format Time ( ĊĠĠĠ Ġmin TimeUnit : ĠTimeUnit Ġ= ĠTimeUnit . MILLI SECOND , ĊĠĠĠ Ġmax TimeUnit : ĠTimeUnit Ġ= ĠTimeUnit . DAY Ċ ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( min TimeUnit . level Ġ> Ġmax TimeUnit . level ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// çŃī çº§ ä¸į æŃ£ç¡® ï¼Į æĬĽ åĩº å¼Ĥå¸¸ ĊĠĠĠĠĠĠĠ Ġthrow ĠNumber FormatException (" çŃī çº§ è®¾ç½® éĶĻè¯¯ ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġss Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġval Ġmi Ġ= Ġss Ġ* Ġ 6 0 ĊĠĠĠ Ġval Ġhh Ġ= Ġmi Ġ* Ġ 6 0 ĊĠĠĠ Ġval Ġdd Ġ= Ġhh Ġ* Ġ 2 4 ĊĊĠĠĠ Ġif Ġ( this Ġ<= Ġ 0 ) Ġreturn Ġ" 0 ${ min TimeUnit . unit }" ĊĠĠĠ Ġif Ġ( max TimeUnit Ġ== ĠTimeUnit . MILLI SECOND ) Ġreturn Ġ"$ this ${ TimeUnit . MILLI SECOND . unit }" ĊĊĠĠĠ Ġval Ġday Ġ= Ġthis Ġ/ Ġdd ĊĠĠĠ Ġval Ġhour Ġ= Ġ( this Ġ- Ġday Ġ* Ġdd ) Ġ/ Ġhh ĊĠĠĠ Ġval Ġminute Ġ= Ġ( this Ġ- Ġday Ġ* Ġdd Ġ- Ġhour Ġ* Ġhh ) Ġ/ Ġmi ĊĠĠĠ Ġval Ġsecond Ġ= Ġ( this Ġ- Ġday Ġ* Ġdd Ġ- Ġhour Ġ* Ġhh Ġ- Ġminute Ġ* Ġmi ) Ġ/ Ġss ĊĠĠĠ Ġval Ġmilli Second Ġ= Ġthis Ġ% Ġss ĊĠĠĠ Ġval Ġarray Ġ= ĠarrayOf ( day , Ġhour , Ġminute , Ġsecond , Ġmilli Second ) ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuffer () ĊĠĠĠ Ġfor Ġ( index Ġin Ġarray . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġunit Ġ= Ġget TimeUnit By Level ( array . size Ġ- Ġindex Ġ- Ġ 1 ) !! ĊĠĠĠĠĠĠĠ Ġval Ġnext Unit Ġ= Ġget TimeUnit By Level ( array . size Ġ- Ġindex Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( array [ index ] Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max TimeUnit . level Ġ< Ġunit . level ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Unit Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray [ index Ġ+ Ġ 1 ] Ġ+= Ġarray [ index ] Ġ* Ġnext Unit . interval ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( array [ index ]). append ( unit . unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( min TimeUnit Ġ== Ġunit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sb . isEmpty ()) Ġsb . append ( 0 ). append ( min TimeUnit . unit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ fun ĠInstant . to Timestamp ( zone Id : ĠZone Id Ġ= ĠZone Id . system Default ()): ĠTimestamp Ġ= ĊĠĠĠ ĠTimestamp . valueOf ( LocalDateTime . of Instant ( this , Ġzone Id )) Ċ Ċ fun ĠLocalDateTime . to Timestamp (): ĠTimestamp Ġ= ĠTimestamp . valueOf ( this )