package Ġtop . z be boy . isy . service . util Ċ Ċ import Ġorg . apache . commons . lang . StringUtils Ċ import Ġorg . springframework . util . Object Utils Ċ import Ġjava . sql . Timestamp Ċ import Ġjava . text . ParseException Ċ import Ġjava . time . Clock Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz be boy Ġ 2 0 1 7 - 1 1 - 3 0 Ġ. Ċ Ġ**/ Ċ class ĠDateTime Utils Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġtimestamp ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtimestamp Ġjava . sql . timestamp ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġjava . util . date ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtimestamp ToDate ( timestamp : Ġjava . sql . Timestamp ): Ġjava . util . Date Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . util . Date ( timestamp . time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġtimestamp Ġto Ġstring ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtimestamp Ġsql ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġformat ĠĠĠ Ġ æł¼å¼ı ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġstring ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtimestamp ToString ( timestamp : Ġjava . sql . Timestamp , Ġformat : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtimestamp . to LocalDateTime (). format ( DateTime Formatter . of Pattern ( format )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġutil Ġdate Ġto Ġsql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate Ġutil Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġsql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġutil Date To Sql Date ( date : Ġjava . util . Date ): Ġjava . sql . Date Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . sql . Date ( date . time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ date ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate ĠĠ Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġformat Ġ æł¼å¼ı ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ æł¼å¼ı åĮĸ åĲİçļĦ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġformat Date ( date : Ġjava . util . Date , Ġformat : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate . to Instant (). at Zone ( Zone Id . system Default ()). format ( DateTime Formatter . of Pattern ( format )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ date ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate ĠĠ Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġformat Ġ æł¼å¼ı ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ æł¼å¼ı åĮĸ åĲİçļĦ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġformat Date ( date : Ġjava . sql . Date , Ġformat : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate . to LocalDate (). format ( DateTime Formatter . of Pattern ( format )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ date ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ æł¼å¼ı åĮĸ åĲİçļĦ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġformat Date ( date : Ġjava . util . Date ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdate . to Instant (). at Zone ( Zone Id . system Default ()). format ( DateTime Formatter . of Pattern (" yyyy - MM - dd ĠHH : mm : ss ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ Timestamp ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtimestamp Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ æł¼å¼ı åĮĸ åĲİçļĦ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġformat Date ( timestamp : Ġjava . sql . Timestamp ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtimestamp . to LocalDateTime (). format ( DateTime Formatter . of Pattern (" yyyy - MM - dd ĠHH : mm : ss ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĪĲ sql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġsql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠParseException ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġformat Date ( date : ĠString ): Ġjava . sql . Date Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . sql . Date ( java . sql . Date . from ( LocalDate . parse ( StringUtils . trim ( date ), ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ")). at Start OfDay ( Zone Id . system Default ()). to Instant ()). time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĪĲ sql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate ĠĠ Ġdate Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġformat Ġ æł¼å¼ı ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġsql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠParseException ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġformat Date ( date : ĠString , Ġformat : ĠString ): Ġjava . sql . Date Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . sql . Date ( java . sql . Date . from ( LocalDate . parse ( StringUtils . trim ( date ), ĠDateTime Formatter . of Pattern ( format )). at Start OfDay ( Zone Id . system Default ()). to Instant ()). time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĪĲ util Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate ĠĠ Ġdate Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġformat Ġ æł¼å¼ı ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġutil Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠParseException ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġformat DateTime ( date : ĠString , Ġformat : ĠString ): Ġjava . sql . Date Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . sql . Date ( java . sql . Date . from ( LocalDateTime . parse ( StringUtils . trim ( date ), ĠDateTime Formatter . of Pattern ( format )). at Zone ( Zone Id . system Default ()). to Instant ()). time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ æĪĲ sql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġdate ĠĠ Ġdate Ġ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġformat Ġ æł¼å¼ı ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġsql Ġdate ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠParseException ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġformat Date To Timestamp ( date : ĠString , Ġformat : ĠString ): Ġjava . sql . Timestamp Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . sql . Timestamp ( java . sql . Timestamp . from ( LocalDateTime . parse ( StringUtils . trim ( date ), ĠDateTime Formatter . of Pattern ( format )). at Zone ( Zone Id . system Default ()). to Instant ()). time ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġå½ĵåīį æĹ¶éĹ´ æĺ¯åĲ¦ åľ¨ æĹ¶éĹ´ èĮĥåĽ´ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġafter Ġ Ġ ä¹ĭåīį æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġbefore Ġ ä¹ĭåĲİ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġor Ġfalse ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtimestamp Range Dec ide ( after : Ġjava . sql . Timestamp , Ġbefore : Ġjava . sql . Timestamp ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠTimestamp ( Clock . system Default Zone (). millis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnow . after ( after ) Ġ&& Ġnow . before ( before ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġå½ĵåīį æĹ¶éĹ´ å¤§äºİ æŁĲ ä¸Ģ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġafter Ġæ Ł Ĳ ä¸Ģ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġor Ġfalse ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtimestamp After Dec ide ( after : Ġjava . sql . Timestamp ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠTimestamp ( Clock . system Default Zone (). millis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnow . after ( after ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġå½ĵåīį æĹ¶éĹ´ å°ı äºİ æŁĲ ä¸Ģ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġbefore Ġæ Ł Ĳ ä¸Ģ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġor Ġfalse ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtimestamp Before Dec ide ( before : Ġjava . sql . Timestamp ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠTimestamp ( Clock . system Default Zone (). millis ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnow . before ( before ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ å¾ĹåĪ° å½ĵåīį æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Now (): ĠTimestamp Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTimestamp ( Clock . system Default Zone (). millis ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ å¾ĹåĪ° å½ĵåīį æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget LocalDateTime ( format : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLocalDateTime . now (). format ( DateTime Formatter . of Pattern ( format )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġæĭ Ĩ åĪĨ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġsplit Symbol ĠåĪĨ éļĶ ç¬¦ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠdateTime ĠĠĠ ĠéľĢè¦ģ æĭ Ĩ åĪĨ çļĦæĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġæĭ Ĩ åĪĨ çļĦ æķ°ç»Ħ æĹ¶éĹ´ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġsplit DateTime ( split Symbol : ĠString , ĠdateTime : ĠString ): ĠArray < String > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( StringUtils . isNotBlank ( dateTime )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarr Ġ= ĠdateTime . split ( split Symbol . to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! Object Utils . isEmpty ( arr ) Ġ&& Ġarr . size Ġ>= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠParseException (" æĹ¶éĹ´ éķ¿åº¦ ä¸į å¤Ł ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠParseException (" æĹ¶éĹ´ ä¸ºç©º ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }