package Ġcom . s rg . pr ue b amar vel . common . adapters Ċ Ċ import Ġcom . google . gson .* Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . text . ParseException Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . format . DateTime Formatter ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġse bro dg ar Ġon Ġ 0 2 / 0 3 / 2 0 2 1 . Ċ Ġ*/ Ċ class ĠLocalDateTime Adapter Ġ: ĠJson Deserializer < LocalDateTime ? >, ĊĠĠĠ ĠJsonSerializer < LocalDateTime ?> Ġ{ ĊĠĠĠ Ġ@ Throws ( Json ParseException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( ĊĠĠĠĠĠĠĠ Ġjson : ĠJson Element , ĊĠĠĠĠĠĠĠ ĠtypeOf T : ĠType ?, ĊĠĠĠĠĠĠĠ Ġcontext : ĠJson Deserialization Context ? ĊĠĠĠ Ġ): ĠLocalDateTime ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Str Ġ= Ġjson . as Json Primitive . asString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse LocalDateTime ( json Str ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJson ParseException ( e . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġparse LocalDateTime ( date String : ĠString ?): ĠLocalDateTime ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( date String Ġ== Ġnull Ġ|| Ġdate String . trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ}. isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( date String . length Ġ== Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . parse ( date String ). at Start OfDay () ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĠLocalDateTime . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate String , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ' T ' HH : mm : ss Z ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( ĊĠĠĠĠĠĠĠ Ġsrc : ĠLocalDateTime ?, ĊĠĠĠĠĠĠĠ ĠtypeOf Src : ĠType ?, ĊĠĠĠĠĠĠĠ Ġcontext : ĠJson Serialization Context ? ĊĠĠĠ Ġ): ĠJson Element Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr DateTime : ĠString Ġ= ĠDateTime Formatter . ISO _ LOCAL _ DATE _ TIME . format ( src ) ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Primitive ( str DateTime ) ĊĠĠĠ Ġ} Ċ }