package Ġcom . cy l . music lake . utils Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . lang . ref . Soft Reference Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . ParseException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ @ Suppress Lint (" SimpleDateFormat ") Ċ /** Ċ Ġ* Ġ< br ></ br > Ċ Ġ* Ġ** è¿Ľè¡Į ä¸ĢäºĽ è½¬æį¢ å·¥ä½ľ ** Ċ Ġ*/ Ċ object ĠFormat Util Ġ{ ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĹ¶éĹ´ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtime Ġ æĹ¶éĹ´ åĢ¼ Ġ( 0 0 : 0 0 Ġ- 2 3 : 5 9 : 5 9 ) ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĹ¶éĹ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat Time ( time : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp Ġ= Ġtime ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġmethod Ġstub ĊĠĠĠĠĠĠĠ Ġif Ġ( temp Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" 0 0 : 0 0 " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtemp Ġ/= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ( temp Ġ% Ġ 6 0 ) Ġ// Ġs ç§Ĵ ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġ( temp Ġ/ Ġ 6 0 Ġ% Ġ 6 0 ) Ġ// m åĪĨ ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġ( temp Ġ/ Ġ 6 0 Ġ/ Ġ 6 0 Ġ% Ġ 2 4 ) Ġ// h å°ı æĹ¶ s ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( h Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ if Ġ( h Ġ> Ġ 9 ) Ġ"$ h " Ġelse Ġ" 0 $ h "} :${ if Ġ( m Ġ> Ġ 9 ) Ġ"$ m " Ġelse Ġ" 0 $ m "} :${ if Ġ( s Ġ> Ġ 9 ) Ġ"$ s " Ġelse Ġ" 0 $ s "} " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ if Ġ( m Ġ> Ġ 9 ) Ġ"$ m " Ġelse Ġ" 0 $ m "} :${ if Ġ( s Ġ> Ġ 9 ) Ġ"$ s " Ġelse Ġ" 0 $ s "} " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĴŃæĶ¾ æ¬¡æķ° ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat Play Count ( count : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ< Ġ 1 0 0 0 0 Ġ-> Ġ"$ count " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ count Ġ/ Ġ 1 0 0 0 0 }.${ count Ġ/ Ġ 1 0 0 0 Ġ% Ġ 1 0 } ä¸ĩ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĹ¶éĹ´ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtime Ġ æĹ¶éĹ´ åĢ¼ Ġ( 0 0 : 0 0 Ġ- 2 3 : 5 9 : 5 9 ) ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĹ¶éĹ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat Date ( time : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠSystem . currentTimeMillis () Ġ- Ġtime ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ< Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ-> Ġ"${ duration Ġ/ Ġ 1 0 0 0 } ç§Ĵ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ< Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ-> Ġ"${ duration Ġ/ Ġ 1 0 0 0 Ġ/ Ġ 6 0 } åĪĨ éĴŁ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ< Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 2 4 Ġ-> Ġ"${ duration Ġ/ Ġ 1 0 0 0 Ġ/ Ġ 6 0 Ġ/ Ġ 6 0 } å°ı æĹ¶ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdfs Ġ= ĠSimpleDateFormat (" yyyy å¹´ MM æľĪ dd æĹ¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġdfs . format ( Date ( time )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtime Ġ æĹ¶éĹ´ åĢ¼ Ġ( 0 0 : 0 0 Ġ- 2 3 : 5 9 : 5 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat Date ( time : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss ") ĊĠĠĠĠĠĠĠ Ġval Ġparse Ġ= ĠdateFormat . parse ( time ) ĊĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠSystem . currentTimeMillis () Ġ- Ġparse . time ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ< Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ-> Ġ"${ duration Ġ/ Ġ 1 0 0 0 } ç§Ĵ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ< Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ-> Ġ"${ duration Ġ/ Ġ 1 0 0 0 Ġ/ Ġ 6 0 } åĪĨ éĴŁ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ< Ġ 6 0 Ġ* Ġ 1 0 0 0 Ġ* Ġ 6 0 Ġ* Ġ 2 4 Ġ-> Ġ"${ duration Ġ/ Ġ 1 0 0 0 Ġ/ Ġ 6 0 Ġ/ Ġ 6 0 } å°ı æĹ¶ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĸĩä»¶ å¤§å°ı ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsize Ġæĸĩä»¶ å¤§å°ı åĢ¼ ĊĠĠĠĠ Ġ* Ġ@ return Ġæĸĩä»¶ å¤§å°ı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat Size ( size : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġmethod Ġstub ĊĠĠĠĠĠĠĠ Ġval Ġdf Ġ= ĠDecimal Format ("# . 0 0 ") ĊĠĠĠĠĠĠĠ Ġvar ĠfileSize Ġ= Ġ" 0 B " ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġ 1 0 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileSize Ġ= Ġdf . format ( size . toDouble ()) Ġ+ Ġ" B " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( size Ġ< Ġ 1 0 4 8 5 7 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileSize Ġ= Ġdf . format ( size . toDouble () Ġ/ Ġ 1 0 2 4 ) Ġ+ Ġ" KB " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( size Ġ< Ġ 1 0 7 3 7 4 1 8 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileSize Ġ= Ġdf . format ( size . toDouble () Ġ/ Ġ 1 0 4 8 5 7 6 ) Ġ+ Ġ" MB " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileSize Ġ= Ġdf . format ( size . toDouble () Ġ/ Ġ 1 0 7 3 7 4 1 8 2 4 ) Ġ+ Ġ" GB " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠfileSize ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¯¹ ä¹± çłģ çļĦ å¤ĦçĲĨ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġs Ġ åİŁ åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ* Ġ@ return ĠG BK å¤ĦçĲĨ åĲİ çļĦæķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat GB K Str ( s : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstr : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Ġ= ĠString ( s . toByteArray ( charset (" ISO - 8 8 5 9 - 1 "))) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnsupported EncodingException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġcatch Ġblock ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġs ĊĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġfun ĠDistance ( long 1 : ĠDouble , Ġlat 1 : ĠDouble , Ġlong 2 : ĠDouble , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlat 2 : ĠDouble ): ĠFloat Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġlat 1 Ġ= Ġlat 1 Ċ // ĠĠĠĠĠĠĠ Ġvar Ġlat 2 Ġ= Ġlat 2 Ċ // ĠĠĠĠĠĠĠ Ġval Ġa : ĠDouble Ċ // ĠĠĠĠĠĠĠ Ġval Ġb : ĠDouble Ċ // ĠĠĠĠĠĠĠ Ġval ĠR : ĠDouble Ċ // ĠĠĠĠĠĠĠ ĠR Ġ= Ġ 6 3 7 8 1 3 7 . 0 Ġ// Ġ åľ° çĲĥ åįĬ å¾Ħ Ċ // ĠĠĠĠĠĠĠ Ġlat 1 Ġ= Ġlat 1 Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 . 0 Ċ // ĠĠĠĠĠĠĠ Ġlat 2 Ġ= Ġlat 2 Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 . 0 Ċ // ĠĠĠĠĠĠĠ Ġa Ġ= Ġlat 1 Ġ- Ġlat 2 Ċ // ĠĠĠĠĠĠĠ Ġb Ġ= Ġ( long 1 Ġ- Ġlong 2 ) Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 . 0 Ċ // ĠĠĠĠĠĠĠ Ġval Ġd : ĠDouble Ċ // ĠĠĠĠĠĠĠ Ġval Ġsa 2 : ĠDouble Ċ // ĠĠĠĠĠĠĠ Ġval Ġsb 2 : ĠDouble Ċ // ĠĠĠĠĠĠĠ Ġsa 2 Ġ= ĠMath . sin ( a Ġ/ Ġ 2 . 0 ) Ċ // ĠĠĠĠĠĠĠ Ġsb 2 Ġ= ĠMath . sin ( b Ġ/ Ġ 2 . 0 ) Ċ // ĠĠĠĠĠĠĠ Ġd Ġ= Ġ( 2 . 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠR Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMath . asin ( Math . sqrt ( sa 2 Ġ* Ġsa 2 Ġ+ Ġ( Math . cos ( lat 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMath . cos ( lat 2 ) Ġ* Ġsb 2 Ġ* Ġsb 2 )))) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠMath . ceil ( d ). toFloat () Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetTime Difference ( star Time : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtime String Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm ") ĊĠĠĠĠĠĠĠ Ġval ĠdateFormat 1 Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ") ĊĠĠĠĠĠĠĠ Ġval ĠendTime Ġ= ĠdateFormat . format ( Date ()) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparse Ġ= ĠdateFormat . parse ( star Time ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparse 1 Ġ= ĠdateFormat . parse ( endTime ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġparse 1 . time Ġ- Ġparse . time ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġdiff Ġ/ Ġ( 2 4 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhour Ġ= Ġdiff Ġ/ Ġ( 6 0 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 ) Ġ- Ġday Ġ* Ġ 2 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġdiff Ġ/ Ġ( 6 0 Ġ* Ġ 1 0 0 0 ) Ġ- Ġday Ġ* Ġ 2 4 Ġ* Ġ 6 0 Ġ- Ġhour Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġdiff Ġ/ Ġ 1 0 0 0 Ġ- Ġday Ġ* Ġ 2 4 Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ- Ġhour Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ- Ġmin Ġ* Ġ 6 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è·Ŀ å½ĵåīį æĹ¶éĹ´ å¤§äºİ 1 5 å¤© æĹ¶ è¾ĵåĩº å¹´ æľĪ æĹ¥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( day Ġ> Ġ 1 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime String Ġ= ĠdateFormat 1 . format ( parse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( day Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime String Ġ= Ġday . toString () Ġ+ Ġ" å¤© åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hour Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime String Ġ= Ġhour . toString () Ġ+ Ġ" å°ı æĹ¶ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( min Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime String Ġ= Ġmin . toString () Ġ+ Ġ" åĪĨ éĴŁ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime String Ġ= Ġs . toString () Ġ+ Ġ" ç§Ĵ åīį " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ĠAuto - generated Ġcatch Ġblock ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtime String ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¯ « ç§Ĵ è½¬ åĮĸ æĪĲ æĹ¶éĹ´ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĹ¶éĹ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdist ime ( time : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdfs Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ") ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate ( time ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdfs . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdfs Ġby Ġlazy Ġ{ ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss ") Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį æĹ¶éĹ´ ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĹ¶éĹ´ Ġy yyy - MM - dd ĠHH : mm : ss ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Chat DateTime ( time : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdfs . format ( Date ( time )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® åŃĹç¬¦ä¸² èİ·åıĸ å½ĵåīį æĹ¶éĹ´ ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĹ¶éĹ´ Ġy yyy - MM - dd ĠHH : mm : ss ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Chat Parse DateTime ( time : ĠString ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdfs . parse ( time ). time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Date ( date : ĠDate ?, Ġpattern : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( date Ġ== Ġnull ) Ġthrow ĠIllegalArgumentException (" date Ġis Ġnull ") ĊĠĠĠĠĠĠĠ Ġif Ġ( pattern Ġ== Ġnull ) Ġthrow ĠIllegalArgumentException (" pattern Ġis Ġnull ") ĊĊĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= Ġformat For ( pattern ) ĊĠĠĠĠĠĠĠ Ġreturn Ġformatter . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠTHREAD LOCAL _ FORMAT S Ġ= Ġobject Ġ: ĠThread Local < Soft Reference < Map < String , ĠSimpleDateFormat >> >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinitial Value (): ĠSoft Reference < Map < String , ĠSimpleDateFormat >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSoft Reference ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHashMap ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat For ( pattern : ĠString ): ĠSimpleDateFormat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠTHREAD LOCAL _ FORMAT S . get () ĊĠĠĠĠĠĠĠ Ġvar Ġformats : ĠMutable Map < String , ĠSimpleDateFormat >? Ġ= Ġref . get () Ġas ĠMutable Map < String , ĠSimpleDateFormat > ĊĠĠĠĠĠĠĠ Ġif Ġ( formats Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformats Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTHREAD LOCAL _ FORMAT S . set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSoft Reference < Map < String , ĠSimpleDateFormat >>( formats )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġformat Ġ= Ġformats [ pattern ] ĊĠĠĠĠĠĠĠ Ġif Ġ( format Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat Ġ= ĠSimpleDateFormat ( pattern , ĠLocale . US ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . time Zone Ġ= ĠTime Zone . getTime Zone (" GMT ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformats [ pattern ] Ġ= Ġformat ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġformat ĊĠĠĠ Ġ} Ċ } Ċ