/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 1 9 ĠJul ien ĠGu er inet Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . gu er inet . my mart let . parser Ċ Ċ import Ġorg . th reet en . bp . DayOfWeek Ċ import Ġorg . th reet en . bp . LocalDate Ċ import Ġorg . th reet en . bp . Local Time Ċ import Ġorg . th reet en . bp . format . DateTime Formatter Ċ import Ġorg . th reet en . bp . format . DateTime ParseException Ċ import Ġjava . util . Locale Ċ Ċ /** Ċ Ġ* ĠAt tempts Ġto Ġparse Ġany Ġ[ Local Time ] Ġwithin Ġthe Ġprovided Ġstring Ċ Ġ* Ċ Ġ* Ġ@ author ĠAll an ĠWang Ċ Ġ* Ġ@ since Ġ 2 . 3 . 2 Ċ Ġ*/ Ċ internal Ġfun ĠString . parse Time (): ĠLocal Time ? Ġ{ ĊĠĠĠ Ġval Ġmatches Ġ= ĠREG EX _ TIME . find ( trim ()) ?. group Values Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġvar Ġhour Ġ= Ġmatches [ 1 ]. toInt () ĊĠĠĠ Ġval Ġminute Ġ= Ġmatches [ 2 ]. toInt () ĊĠĠĠ Ġval Ġpm Ġ= Ġmatches [ 3 ] Ġ== Ġ" pm " ĊĠĠĠ Ġ// ĠIf Ġit 's ĠPM , Ġthen Ġadd Ġ 1 2 Ġhours Ġto Ġthe Ġhours Ġfor Ġ 2 4 Ġhours Ġformat ĊĠĠĠ Ġ// ĠMake Ġsure Ġit Ġisn 't Ġno on ĊĠĠĠ Ġ// ĠWe Ġcan Ġignore Ġmid night Ġas Ġthere Ġare Ġno Ġclasses Ġthen ĊĠĠĠ Ġif Ġ( pm Ġ&& Ġhour Ġ!= Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhour Ġ+= Ġ 1 2 ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠLocal Time . of ( hour , Ġminute ) Ċ } Ċ Ċ private Ġval Ġd tf Ġ= ĠDateTime Formatter . of Pattern (" MMM Ġdd , Ġy yyy "). with Locale ( Locale . CAN ADA ) Ċ Ċ /** Ċ Ġ* ĠAttempt Ġto Ġparse Ġdate Ġof Ġthe Ġformat ĠJan Ġ 0 1 , Ġ 2 0 1 9 Ċ Ġ*/ Ċ fun ĠString . parse Date Abbre v (): ĠLocalDate ? Ġ= Ġtry Ġ{ ĊĠĠĠ ĠLocalDate . parse ( trim (), Ġd tf ) Ċ } Ġcatch Ġ( ignore : ĠDateTime ParseException ) Ġ{ ĊĠĠĠ Ġnull Ċ } Ċ Ċ /** Ċ Ġ* ĠParses Ġa ĠString Ġinto Ġa ĠLocalDate Ġobject . Ċ Ġ* ĠString Ġshould Ġbe Ġof Ġthe Ġformat ĠMM / DD Ċ Ġ* Ċ Ġ* Ġ@ author ĠAll an ĠWang Ċ Ġ* Ġ@ since Ġ 2 . 3 . 2 Ċ Ġ* Ċ Ġ* Ġ@ param Ġyear ĠThe Ġcurrent Ġyear Ċ Ġ* Ġ@ return ĠThe Ġcorresponding Ġlocal Ġdate Ċ Ġ*/ Ċ fun ĠString . parse Date MD ( year : ĠInt ): ĠLocalDate ? Ġ{ ĊĠĠĠ Ġval Ġmatches Ġ= ĠREG EX _ DATE _ MD . find ( trim ()) ?. group Values Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġmonth Ġ= Ġmatches [ 1 ]. toInt () ĊĠĠĠ Ġval Ġday Ġ= Ġmatches [ 2 ]. toInt () ĊĠĠĠ Ġreturn ĠLocalDate . of ( year , Ġmonth , Ġday ) Ċ } Ċ Ċ /** Ċ Ġ* ĠParses Ġthe Ġdate Ġrange ĠString Ġinto Ġ 2 Ġdates Ċ Ġ* Ċ Ġ* Ġ@ author ĠAll an ĠWang Ċ Ġ* Ġ@ since Ġ 2 . 3 . 2 Ċ Ġ* Ċ Ġ* Ġ@ param Ġyear ĠThe Ġcurrent Ġyear Ċ Ġ* Ġ@ return ĠA Ġpair Ġrepresenting Ġthe Ġstarting Ġand Ġending Ġdates Ġof Ġthe Ġrange Ċ Ġ* Ġ@ throws ĠIllegalArgumentException Ċ Ġ*/ Ċ fun ĠString . parse Date MD Range ( year : ĠInt ): ĠPair < LocalDate , ĠLocalDate >? Ġ{ ĊĠĠĠ Ġ// ĠSplit Ġthe Ġrange Ġinto Ġthe Ġ 2 Ġdate ĠStrings ĊĠĠĠ Ġval Ġdates Ġ= Ġsplit ("- ") ĊĠĠĠ Ġval ĠstartDate Ġ= Ġdates [ 0 ]. parse Date MD ( year ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval ĠendDate Ġ= Ġdates [ 1 ]. parse Date MD ( year ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġ// ĠParse Ġthe Ġdates , Ġreturn Ġthem Ġas Ġa Ġpair ĊĠĠĠ Ġreturn ĠstartDate Ġto ĠendDate Ċ } Ċ Ċ /** Ċ Ġ* ĠObject Ġmapping Ġ[ DayOfWeek ] Ġto Ġminer va Ġcharacter Ġkeys Ċ Ġ* Ċ Ġ* Ġ@ author ĠAll an ĠWang Ċ Ġ* Ġ@ since Ġ 2 . 3 . 2 Ċ Ġ*/ Ċ object ĠDay Utils Ġ{ ĊĊĠĠĠ Ġ// ĠTODO Ġverify , Ġdocs Ġfrom Ġoriginal Ġday utils Ġmentions ĠN Ġas Ġwell Ġfor Ġs unday ĊĠĠĠ Ġprivate Ġval Ġdays Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ' M ' Ġto ĠDay OfWeek . MON DAY , ĊĠĠĠĠĠĠĠ Ġ' T ' Ġto ĠDay OfWeek . T UES DAY , ĊĠĠĠĠĠĠĠ Ġ' W ' Ġto ĠDay OfWeek . W ED N ES DAY , ĊĠĠĠĠĠĠĠ Ġ' R ' Ġto ĠDay OfWeek . TH UR SD AY , ĊĠĠĠĠĠĠĠ Ġ' F ' Ġto ĠDay OfWeek . FR ID AY , ĊĠĠĠĠĠĠĠ Ġ' S ' Ġto ĠDay OfWeek . S ATUR DAY , ĊĠĠĠĠĠĠĠ Ġ' U ' Ġto ĠDay OfWeek . S UND AY ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġday Ġassociated Ġto Ġcharacter , Ġor Ġnull Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchar To Day ( day Char : ĠChar ): ĠDay OfWeek ? Ġ= ĊĠĠĠĠĠĠĠ Ġdays . find Ġ{ Ġit . first Ġ== Ġday Char Ġ} ?. second ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġchar Ġassociated Ġwith Ġday ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġday To Char ( day : ĠDay OfWeek ): ĠChar Ġ= ĊĠĠĠĠĠĠĠ Ġdays . first Ġ{ Ġit . second Ġ== Ġday Ġ}. first Ċ } Ċ