說說字符串轉(zhuǎn) OffSetDateTime 你真的會(huì)用嗎
字符串轉(zhuǎn) OffSetDateTime 你真的會(huì)用
要?jiǎng)?chuàng)建OffsetDateTime ,需要日期 (日,月和年), 時(shí)間 (小時(shí),分鐘,秒和納秒)和偏移量 (與UTC的差異)。
如果輸入只有日期,將會(huì)報(bào)錯(cuò).
如果只有 日期 小時(shí),分鐘和秒,也會(huì)報(bào)錯(cuò).
因此必須構(gòu)建其余的,或者假設(shè)它們的默認(rèn)值。
下面是我寫好的工具類,拿去用吧:
public class OffSetDateTimeConverter { private static DateTimeFormatter DATE_FORMAT = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd") .parseDefaulting(ChronoField.HOUR_OF_DAY, 0) .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) .parseDefaulting(ChronoField.MILLI_OF_SECOND, 0) .parseDefaulting(ChronoField.OFFSET_SECONDS, 0) .toFormatter(); private static DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd HH:mm:ss") .parseDefaulting(ChronoField.MILLI_OF_SECOND, 0) .parseDefaulting(ChronoField.OFFSET_SECONDS, 0) .toFormatter(); public static OffsetDateTime convertDate(String date) { if (StringUtils.isBlank(date)) { return null; } return OffsetDateTime.parse(date, DATE_FORMAT); } public static OffsetDateTime convertDateTime(String dateTime) { if (StringUtils.isBlank(dateTime)) { return null; } return OffsetDateTime.parse(dateTime, DATE_TIME_FORMAT); } }
上面的工具類保存到數(shù)據(jù)庫(kù)會(huì)報(bào)錯(cuò), 用下面這個(gè)吧
public class OffSetDateTimeConverter { /** * yyyy-MM-dd * * @param date * @return */ public static OffsetDateTime convertDate(String date) { if (StringUtils.isBlank(date)) { return null; } return LocalDate.parse(date, ISO_LOCAL_DATE).atTime(LocalTime.MIN).atZone(systemDefault()).toOffsetDateTime(); } /** * "yyyy-MM-dd HH:mm:ss" * * @param dateTime * @return */ public static OffsetDateTime convertDateTime(String dateTime) { if (StringUtils.isBlank(dateTime)) { return null; } DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime localDateTime = LocalDateTime.parse(dateTime, dtf); return OffsetDateTime.of(localDateTime, ZoneOffset.UTC); } }
又來更新了,上面方式會(huì)有時(shí)區(qū)問題,用下面的方式解決
public class OffSetDateTimeConverter { /** * yyyy-MM-dd * * @param date * @return */ public static OffsetDateTime convertDate(String date) { if (StringUtils.isBlank(date)) { return null; } LocalDateTime localDateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd")); return OffsetDateTime.of(localDateTime, ZoneId.systemDefault().getRules().getOffset(localDateTime)); } /** * "yyyy-MM-dd HH:mm:ss" * * @param dateTime * @return */ public static OffsetDateTime convertDateTime(String dateTime) { if (StringUtils.isBlank(dateTime)) { return null; } LocalDateTime localDateTime = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); return OffsetDateTime.of(localDateTime, ZoneId.systemDefault().getRules().getOffset(localDateTime)); } }
OffsetDateTime時(shí)間格式轉(zhuǎn)換
可能開發(fā)中又碰到OffsetDateTime時(shí)間格式,不知道如何轉(zhuǎn)換
最簡(jiǎn)單一招解決:
OffsetDateTime creationTimestamp; creationTimestamp.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
即可輕松轉(zhuǎn)換為String字符串類型。
OK!問題解決!以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決IDEA2021版compiler.automake.allow.when.app.running不存在的問題
很多文章介紹IntelliJ IDEA開啟熱部署功能都會(huì)寫到在IntelliJ IDEA中的注冊(cè)表中開啟compiler.automake.allow.when.app.running選項(xiàng),此選項(xiàng)在IntelliJ IDEA 2021.2之后的版本遷移到高級(jí)設(shè)置中,下面看下設(shè)置方法2021-09-09Spring在多線程下@Resource注入為null的問題
這篇文章主要介紹了Spring在多線程下@Resource注入為null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02AndroidHttpClient使用Cookie應(yīng)用分析
今天想把一個(gè)用使用了HttpClient的自動(dòng)簽到小程序移植到Android上,還好Android的SDK自帶了HttpClient的包.當(dāng)然也可以繼續(xù)使用DefaultHttpClient,但用為Android定制的AndroidHttpClient自然更好2012-11-11springboot+vue實(shí)現(xiàn)驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了springboot+vue實(shí)現(xiàn)驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08SpringBoot使用Redis單機(jī)版過期鍵監(jiān)聽事件的實(shí)現(xiàn)示例
在緩存的使用場(chǎng)景中經(jīng)常需要使用到過期事件,本文主要介紹了SpringBoot使用Redis單機(jī)版過期鍵監(jiān)聽事件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07