package Ġno . nav . e ess i . pens jon . utils Ċ Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . format . DateTime ParseException Ċ import Ġjava . util .* Ċ import Ġjavax . xml . datatype . Datatype Factory Ċ import Ġjavax . xml . datatype . XML G regorian Calendar Ċ Ċ private Ġconst Ġval Ġsdf Pattern Ġ= Ġ" yyyy - MM - dd " Ċ Ċ fun ĠXML G regorian Calendar . simple Format (): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( this . year Ġ> Ġ 2 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġdate Ġ= ĠSimpleDateFormat ( sdf Pattern ). parse ( this . toString ()) ĊĠĠĠ Ġreturn ĠSimpleDateFormat ( sdf Pattern ). format ( date ) Ċ } Ċ Ċ fun ĠDate . simple Format (): ĠString Ġ= ĠSimpleDateFormat ( sdf Pattern ). format ( this ) Ċ Ċ fun Ġcreate XML Calendar FromString ( date Str : ĠString ): ĠXML G regorian Calendar Ġ{ ĊĠĠĠ Ġval Ġdate Ġ= ĠSimpleDateFormat ( sdf Pattern ). parse ( date Str ) ĊĠĠĠ Ġval Ġg cal Ġ= ĠG regorian Calendar () ĊĠĠĠ Ġg cal . time In Millis Ġ= Ġdate . time ĊĠĠĠ Ġreturn ĠDat atype Factory . newInstance (). new XML G regorian Calendar ( g cal ) Ċ } Ċ Ċ fun ĠconvertTo XM Local ( time : ĠLocalDate ): ĠXML G regorian Calendar Ġ{ ĊĠĠĠ Ġval Ġg cal Ġ= ĠG regorian Calendar () ĊĠĠĠ Ġg cal . time Ġ= ĠDate . from ( time . at Start OfDay ( Zone Id . system Default ()). to Instant ()) ĊĠĠĠ Ġreturn ĠDat atype Factory . newInstance (). new XML G regorian Calendar ( g cal ) Ċ } Ċ Ċ fun Ġto LocalDate ( dateTime : ĠString ): ĠLocalDate Ġ{ ĊĠĠĠ Ġ// off se Ġ& Ġzone ĊĠĠĠ Ġif ( dateTime . contains ("+ ")){ ĊĠĠĠĠĠĠĠ Ġif ( dateTime . substring After ("+ "). contains (" :" )){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠZ onedDateTime . parse ( dateTime , ĠDateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Zone Same Instant ( Zone Id . of (" Europe / Par is ")). to LocalDateTime (). to LocalDate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠZ onedDateTime . parse ( dateTime , ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ' T ' HH : mm : ss . SS SZ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Zone Same Instant ( Zone Id . of (" Europe / Par is ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to LocalDateTime (). to LocalDate () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif ( isValid LocalDate ( dateTime )){ ĊĠĠĠĠĠĠĠ Ġreturn ĠLocalDate . parse ( dateTime , ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ")) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠLocalDateTime . parse ( dateTime , ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ' T ' HH : mm : ss . SS S ")). to LocalDate () Ċ } Ċ Ċ private Ġfun ĠisValid LocalDate ( date Str : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠLocalDate . parse ( date Str , Ġ ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ")) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue Ċ } Ċ