package Ġcom . sir ion raz zer . di ary . util Ċ Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . Date Ċ import Ġjava . util . Locale Ċ Ċ class ĠDate Utils Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject ĠFactory Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDAY _ MILLISECONDS Ġ= Ġ 8 6 4 0 0 0 0 0 L ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConverts Ġfrom ĠDate Ġto ĠLong Ġdate Ġrepresentation ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate Ġto Ġbe Ġconverted ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġdate Ġrepresented Ġas ĠLong Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġpersist Date ( date : ĠDate ?): ĠLong ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate ?. time ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConverts Ġfrom ĠLong Ġto ĠDate Ġdate Ġrepresentation ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġmillis Ġto Ġbe Ġconverted ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġdate ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġdate From Millis ( millis : ĠLong ?): ĠDate ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( millis Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate ( millis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConvert Ġdate Ġin Ġcase Ġnote Ġwas Ġtaken Ġrecently Ġor Ġtoday ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġedit Date Ġis Ġoriginal Ġedit Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġspecial Text Ġis Ġtrue Ġif Ġspecial Ġstring Ġevents Ġ( Today , ĠRecent ly ) Ġshould Ġbe Ġused ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġwith Year Ġis Ġtrue Ġif Ġpattern Ġshould Ġcontain Ġyear Ġalso ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġappropriate Ġtext Ġ( ie . Ġ" Recent ly " Ġot Ġ" Today ") Ġor ĠHH : mm ĠDD / mm Ġfor Ġolder Ġnotes ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġsmart Date ( edit Date : ĠDate ?, Ġspecial Text : ĠBoolean , Ġwith Year : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsmart Date : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Date Ġ= ĠDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdf Ġ= ĠSimpleDateFormat (" d / M ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( with Year ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdf Ġ= ĠSimpleDateFormat (" d / M / yy ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time Ġ= Ġcurrent Date ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsmart Date Ġ= Ġdf . format ( edit Date ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġcase Ġof Ġtime Ġzone Ġchange Ġuse Ġjust Ġplain Ġtime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Date . before ( edit Date )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsmart Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( special Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlast Ġhour Ġ( now Ġ- Ġ 1 Ġhour ) Ġis ĠRecent ly ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . add ( Calendar . HOUR , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cal . time . compareTo ( edit Date ) Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmart Date Ġ= Ġ" Recent ly " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsmart Date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlast Ġday Ġ( now Ġ- Ġ 2 4 Ġhours ) Ġis ĠToday ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcal . add ( Calendar . HOUR , Ġ- 2 3 ) Ġ// Ġwe Ġalready Ġtook Ġ- 1 Ġhour , Ġso Ġ- 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cal . time . compareTo ( edit Date ) Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsmart Date Ġ= Ġ" Today " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsmart Date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsmart Date ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠS unday Ġ= Ġ 0 , ĠMonday Ġ= Ġ 1 , Ġ..., ĠS aturday Ġ= Ġ 6 ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġday In Week (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCalendar . getInstance (). get ( Calendar . DAY _ OF _ WEEK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Week And Year Pair ( date In Milliseconds : ĠLong ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate From Millis ( date In Milliseconds )?. let Ġ{ Ġget Week And Year Pair ( it ) Ġ} !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Month And Year Pair ( date In Milliseconds : ĠLong ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate From Millis ( date In Milliseconds )?. let Ġ{ Ġget Month And Year Pair ( it ) Ġ} !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Week And Year Pair ( date : ĠDate ): ĠPair < Int , ĠInt > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( cal . get ( Calendar . WEEK _ OF _ YEAR ), Ġcal . get ( Calendar . YEAR )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Week Year String ( week Year : ĠPair < Int , ĠInt >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat AsString ( week Year . first , Ġweek Year . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Week Year String ( date : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġget Week And Year Pair ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat AsString ( pair . first , Ġpair . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Month Year String ( date : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpair Ġ= Ġget Month And Year Pair ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat AsString ( pair . first , Ġpair . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Month And Year Pair ( date : ĠDate ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcal . time Ġ= Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( cal . get ( Calendar . MONTH ), Ġcal . get ( Calendar . YEAR )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġformat AsString ( x : ĠInt , Ġy : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ x -$ y " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Month Year String ( pair : ĠPair < Int , ĠInt >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat AsString ( pair . first , Ġpair . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ