/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 Ġ- Ġpresent ĠIn structure , ĠInc . Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġ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 . in structure . student . db . sql Col Adapters Ċ Ċ import Ġcom . squareup . sql de light . Column Adapter Ċ import Ġorg . th reet en . bp . Offset DateTime Ċ import Ġorg . th reet en . bp . Zone Offset Ċ import Ġorg . th reet en . bp . format . DateTime Formatter Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ type alias ĠDate Ġ= ĠOffset DateTime Ċ Ċ /** Ċ Ġ* ĠExpect ation Ġis Ġthat Ġthe Ġdatabase Ġwill Ġhold Ġwhatever Ġdatetime Ġthe Ġserver Ġgives Ġback Ġto Ġus . Ċ Ġ* ĠWhen Ġwe Ġpull Ġit Ġout , Ġit Ġwill Ġbe Ġconverted Ġto Ġa Ġlocal Ġ[ Offset DateTime ]. Ċ Ġ* ĠWhen Ġwe Ġput Ġsomething Ġin , Ġit Ġwill Ġbe Ġconverted Ġto Ġa ĠUTC - based ĠISO - 8 6 0 1 Ġdatetime Ġ( what Ġthe Ġserver Ġcurrently Ġuses ). Ċ Ġ*/ Ċ class ĠDate Adapter Ġ: ĠColumn Adapter < Date , ĠString > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdecode ( database Value : ĠString ) Ġ= ĠDate . parse ( database Value ). with Offset Same Instant ( Offset DateTime . now (). offset ) Ġas ĠDate ĊĠĠĠ Ġoverride Ġfun Ġencode ( value : ĠDate ): ĠString Ġ= Ġvalue . to Api String () Ċ } Ċ Ċ /** Ċ Ġ* ĠTurn s Ġa Ġlocal ĠOffset DateTime Ġto Ġa ĠUTC - based ĠISO - 8 6 0 1 ĠDate time Ġwith Ġtimezone Ġstring Ċ Ġ*/ Ċ fun ĠOffset DateTime ?. to Api String (): ĠString Ġ{ ĊĠĠĠ Ġthis Ġ?: Ġreturn Ġ"" ĊĠĠĠ Ġval Ġut c Time Ġ= Ġthis . with Offset Same Instant ( Zone Offset . UTC ) ĊĠĠĠ Ġreturn Ġut c Time . format ( DateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) Ċ }