欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java關于時間格式化的方法

 更新時間:2020年09月06日 14:10:23   作者:l去留無心  
這篇文章主要介紹了詳解Java關于時間格式化的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一般從數(shù)據(jù)庫獲取的時間或日期時間格式化為date或者datetime,為了方便前端渲染,API接口返回的時候需要對日期進行格式化轉換,通常會用到 SimpleDateFormat 工具處理。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String time = dateFormat.format(new Date());

如果一個DTO類里面有很多關于時間字段需要格式化,就會降低開發(fā)效率,產(chǎn)生很多重復臃腫的代碼。并且有的項目用Date,有的項目會用LocalDateTime

而此時如果能將時間格式統(tǒng)一配置,就可以省下更多時間專注于業(yè)務開發(fā)了。

接下來介紹SpringBoot中常用的對時間或日期處理的方式

一、@JsonFormat 注解

JsonFormat注解是jackson包里面的一個注解,需要加上依賴

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.11.2</version>
</dependency>

@JsonFormat注解需要用在實體類的時間字段上,對應的字段才能進行格式化。

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Date;

@Data
public class TestDTO {

  @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
  private LocalDateTime createTime;

  @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
  private Date updateTime;
}
public TestDTO get(){
    TestDTO testDTO = new TestDTO();
    testDTO.setLocalDateTime(LocalDateTime.now());
    testDTO.setDate(new Date());
    return testDTO;
  }

如下所示

還有一種可以全局定義的

二、@JsonComponent 注解 (全局)

配置類

@JsonComponent
public class DateFormatConfig {

  @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
  private String pattern;

  // date 類型全局時間格式化
  @Bean
  public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilder() {

    return builder -> {
      TimeZone tz = TimeZone.getTimeZone("UTC");
      DateFormat df = new SimpleDateFormat(pattern);
      df.setTimeZone(tz);
      builder.failOnEmptyBeans(false)
          .failOnUnknownProperties(false)
          .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
          .dateFormat(df);
    };
  }

  // LocalDate 類型全局時間格式化
  @Bean
  public LocalDateTimeSerializer localDateTimeDeserializer() {
    return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
  }

  @Bean
  public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
    return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
  }
}

這樣我們就不用加注解了,也可以實現(xiàn)格式化

@JsonComponent
public class DateFormatConfig {

  @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
  private String pattern;

  // date 類型全局時間格式化
  @Bean
  public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilder() {

    return builder -> {
      TimeZone tz = TimeZone.getTimeZone("UTC");
      DateFormat df = new SimpleDateFormat(pattern);
      df.setTimeZone(tz);
      builder.failOnEmptyBeans(false)
          .failOnUnknownProperties(false)
          .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
          .dateFormat(df);
    };
  }

  // LocalDate 類型全局時間格式化
  @Bean
  public LocalDateTimeSerializer localDateTimeDeserializer() {
    return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
  }

  @Bean
  public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
    return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
  }
}

到此這篇關于詳解Java關于時間格式化的方法的文章就介紹到這了,更多相關Java 時間格式化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

    Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解

    這篇文章主要介紹了Java上傳文件到服務器指定文件夾實現(xiàn)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Java順時針打印矩陣

    Java順時針打印矩陣

    這篇文章主要為大家詳細介紹了Java順時針打印矩陣,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • SpringBoot實現(xiàn)快遞物流查詢功能(快遞鳥)

    SpringBoot實現(xiàn)快遞物流查詢功能(快遞鳥)

    本文將基于springboot2.4.0實現(xiàn)快遞物流查詢,物流信息的獲取通過快遞鳥第三方實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-10-10
  • Java8中的default關鍵字詳解

    Java8中的default關鍵字詳解

    這篇文章主要介紹了Java8中的default關鍵字詳解,在實現(xiàn)某個接口的時候,需要實現(xiàn)該接口所有的方法,這個時候default關鍵字就派上用場了。通過default關鍵字定義的方法,集成該接口的方法不需要去實現(xiàn)該方法,需要的朋友可以參考下
    2023-08-08
  • java如何反編譯jar包并修改class文件重新打包

    java如何反編譯jar包并修改class文件重新打包

    這篇文章主要介紹了java如何反編譯jar包并修改class文件重新打包,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springcloud gateway自定義斷言規(guī)則詳解,以后綴結尾進行路由

    springcloud gateway自定義斷言規(guī)則詳解,以后綴結尾進行路由

    這篇文章主要介紹了springcloud gateway自定義斷言規(guī)則詳解,以后綴結尾進行路由,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 解析阿里GTS開源版本fescar分布式事務

    解析阿里GTS開源版本fescar分布式事務

    這篇文章主要為大家介紹解析阿里GTS開源版本fescar分布式事務的原理及使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多進步
    2022-02-02
  • SpringBoot JSON全局日期格式轉換器實現(xiàn)方式

    SpringBoot JSON全局日期格式轉換器實現(xiàn)方式

    這篇文章主要介紹了SpringBoot JSON全局日期格式轉換器,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Java中List排序的三種實現(xiàn)方法實例

    Java中List排序的三種實現(xiàn)方法實例

    其實Java針對數(shù)組和List的排序都有實現(xiàn),對數(shù)組而言你可以直接使用Arrays.sort,對于List和Vector而言,你可以使用Collections.sort方法,下面這篇文章主要給大家介紹了關于Java中List排序的三種實現(xiàn)方法,需要的朋友可以參考下
    2021-12-12
  • Java 反射機制知識詳細介紹及總結

    Java 反射機制知識詳細介紹及總結

    反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為java語言的反射機制
    2017-01-01

最新評論