• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            formatdatetime(formatDateTimeyyyymmdd)

            更新時間:2023-03-01 13:10:41 閱讀: 評論:0

            作者:程序員內點事

            說在前邊

            最近部門幾位同事受了一些委屈相繼離職,共事三年臨別之際頗有不舍,待一切手續辦妥帖,寒暄過后送他們出公司,幾個老哥臨別時沖我鬼魅一笑,我頓時心里一緊有種不好的預感,這事絕對沒有這么簡單。等我接手這幾個大佬的項目后,應驗了我的預感,此刻我居然有點后悔,為啥送別之時沒揍他們一頓!哈哈哈~ 而這種打人的沖動,在我開始優化幾位老哥的項目時候,變得越來越強烈。

            有個坑

            技術部每個月都會組織一下代碼走查及優化,以前是各自審查優化自己的項目,如今幾位老哥的離職他們的項目就落到了我的頭上。對于程序員來說最痛苦的事情就是接手別人的項目,還要做優化改造,因為這一點也不比重構一遍項目簡單。不過,軍令在前,沒辦法硬著頭皮上吧!

            第一個優化的點就讓我有點崩潰,這幾個大佬的技能能力很強,一直都是我學習的榜樣,但在項目里幾乎所有的日期格式化都這樣用 SimpleDateFormat ,像如下代碼這樣實現,emm~ ,受過傷的男人怎么啥事都做的出來,哈哈哈~

            SvcOrderDailyStatisticsPo orderDailyStatisticsPo = new SvcOrderDailyStatisticsPo();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");Date stationTime = dateFormat.par(dateFormat.format(svcWorkOrderPo.getPayEndTime()));orderDailyStatisticsPo.tStatisticalDate(stationTime);

            而且項目中的時間和日期API用的也比較混亂,考慮到 java.util.Date 和 java.util.Calendar 不支持時區,且非線程安全,對于日期的計算相對繁瑣,技術部一致要求用JDK1.8以后的 java.time LocalDateTime。但不少人還是在用 java.util.Date 和 java.util.Calendar 處理日期。

            優化方案

            時間格式化是使用頻率非常高的,如何讓時間格式化變得既簡單又不用重復造輪子,那么就應將它抽象出來,作為全局的日期格式化處理,下面就結合實踐簡單介紹下幾種優化方案。

            測試地址:http://127.0.0.1:8080/timeTest

            @GetMapping("/timeTest") public OrderInfo timeTest() { OrderInfo order = new OrderInfo(); order.tCreateTime(LocalDateTime.now()); order.tUpdateTime(new Date()); return order; }1、@JsonFormat注解

            使用@JsonFormat注解格式化時間,應該算是一個基本操作了,大部分開發者都應用此種方式,簡單方便。

            /** * @Author: xiaofu * @Description: */public class OrderInfo { @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; public LocalDateTime getCreateTime() { return createTime; } public void tCreateTime(LocalDateTime createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void tUpdateTime(Date updateTime) { this.updateTime = updateTime; }}

            測試一下結果,發現 Date 類型和 LocalDateTime 類型都格式化成功,但還是有個問題,這樣做仍然比較繁瑣,每個實體類的日期字段都要加@JsonFormat注解,重復的工作量也不小。接著往下看~

            2、全局配置 (1)

            Springboot 已經為我們提供了日期格式化 ${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss},這里我們需要進行全局配置,配置比較簡單,也無需在實體類屬性上添加@JsonFormat注解。

            /** * @Author: xiaofu * @Description: */public class OrderInfo { //@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; //@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; public LocalDateTime getCreateTime() { return createTime; } public void tCreateTime(LocalDateTime createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void tUpdateTime(Date updateTime) { this.updateTime = updateTime; }}

            只需要用@Configuration定義一個配置類,注入兩個Bean即可完成全局日期格式化處理,這種方式也是當前我項目中正在用的方式。

            /** * @Author: xiaofu * @Description: */@Configurationpublic class LocalDateTimeSerializerConfig { @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}") private String pattern; @Bean public LocalDateTimeSerializer localDateTimeDerializer() { return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern)); } @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> builder.rializerByType(LocalDateTime.class, localDateTimeDerializer()); }}

            這種方式可支持 Date 類型和 LocalDateTime 類型并存,那么有一個問題就是現在全局時間格式是yyyy-MM-dd HH:mm:ss,但有的字段卻需要yyyy-MM-dd格式咋整?

            那就需要配合@JsonFormat注解使用,在特定的字段屬性添加@JsonFormat注解即可,因為@JsonFormat注解優先級比較高,會以@JsonFormat注解標注的時間格式為主。

            3、全局配置 (2)

            這種全局配置的實現方式與上邊的效果是一樣的,不過,要注意的是使用這種配置后,字段手動配置@JsonFormat注解將不再生效。

            /** * @Author: xiaofu * @Description: */public class OrderInfo { //@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; //@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; public LocalDateTime getCreateTime() { return createTime; } public void tCreateTime(LocalDateTime createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void tUpdateTime(Date updateTime) { this.updateTime = updateTime; }}

            /** * @Author: xiaofu * @Description: */@Configurationpublic class LocalDateTimeSerializerConfig { @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}") private String pattern; @Bean @Primary public ObjectMapper rializingObjectMapper() { ObjectMapper objectMapper = new ObjectMapper(); JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer()); javaTimeModule.addDerializer(LocalDateTime.class, new LocalDateTimeDerializer()); objectMapper.registerModule(javaTimeModule); return objectMapper; } public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> { @Override public void rialize(LocalDateTime value, JsonGenerator gen, SerializerProvider rializers) throws IOException { gen.writeString(value.format(ofPattern(pattern))); } } public class LocalDateTimeDerializer extends JsonDerializer<LocalDateTime> { @Override public LocalDateTime derialize(JsonParr p, DerializationContext derializationContext) throws IOException { return LocalDateTime.par(p.getValueAsString(), ofPattern(pattern)); } }}總結

            分享了一個Springboot項目開發過程中的一個小技巧,也順便吐槽一下項目優化中遇到的坑,優化別的人的代碼雖然是一件比較痛苦的事情,但在這個過程中確實能學習到很多技巧,對個人的技能提升也是很有幫助,因為都是些能夠實實在在提高開發效率的干貨。

            來源:掘金 鏈接:https://juejin.im/post/5e940626e51d4546f5790979

            本文發布于:2023-02-28 19:59:00,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/167764744175750.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:formatdatetime(formatDateTimeyyyymmdd).doc

            本文 PDF 下載地址:formatdatetime(formatDateTimeyyyymmdd).pdf

            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 亚洲深深色噜噜狠狠网站| 狠狠爱五月丁香亚洲综| 亚洲精品有码在线观看| 年轻女教师hd中字3| 国产精品自在自线视频| 亚洲成在人线AV品善网好看| 成人亚洲一区二区三区在线 | 9丨精品国产高清自在线看| 性色av无码无在线观看| 亚洲精品成人片在线观看精品字幕| 搡老女人老妇女老熟妇69| 激情综合色区网激情五月| 国产精品毛片一区二区| 亚洲欧美日韩综合久久| 日韩精品一区二区亚洲专区| 日韩精品无码免费专区网站| 中文人妻av高清一区二区| 2021国产精品自产拍在线| 九九热在线精品视频免费| 九九九久久国产精品| 日韩区中文字幕在线观看| 国产人妻精品午夜福利免费| 久久被窝亚洲精品爽爽爽| 偷炮少妇宾馆半推半就激情| 国产成人av一区二区在线观看 | 浪潮av色综合久久天堂| gogogo高清在线观看视频中文| 无码毛片一区二区本码视频| 这里只有精品在线播放 | 成人免费A级毛片无码片2022| 亚洲日韩AV一区二区三区四区| 中文字幕一区二区三区久久蜜桃| 国产目拍亚洲精品区一区| 亚洲成在人线AV品善网好看| 久久精品夜夜夜夜夜久久| 国产精品无码成人午夜电影| 亚洲av综合色区久久精品天堂| 国产中文字幕精品视频| 激情综合色综合啪啪五月| 94人妻少妇偷人精品| 忘忧草www日本韩国|