1. 程式人生 > 遊戲 >XGP 2月下旬新增遊戲洩露 《全面戰爭:戰錘3》領銜

XGP 2月下旬新增遊戲洩露 《全面戰爭:戰錘3》領銜

@JsonFormat與@DateTimeFormat註解的使用

背景:從資料庫獲取時間傳到前端進行展示的時候,我們有時候可能無法得到一個滿意的時間格式的時間日期,在資料庫中顯示的是正確的時間格式,獲取出來卻變成了很醜的時間戳,@JsonFormat註解很好的解決了這個問題,我們通過使用@JsonFormat可以很好的解決:後臺到前臺時間格式保持一致的問題,其次,另一個問題是,我們在使用WEB服務的時,可能會需要用到,傳入時間給後臺,比如註冊新使用者需要填入出生日期等,這個時候前臺傳遞給後臺的時間格式同樣是不一致的,而我們的與之對應的便有了另一個註解,@DataTimeFormat便很好的解決了這個問題,接下來記錄一下具體的@JsonFormat與DateTimeFormat的使用過程。

宣告:關於@JsonFormat的使用,一定要匯入正確完整的包。

  1. 註解@JsonFormat

    1. 使用maven引入@JsonFormat所需要的jar包,我貼一下我這裡的pom檔案的依賴

      <!--JsonFormat-->
       
          <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.8</version>
          </dependency>
       
          <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.8</version>
          </dependency>
       
          <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
          </dependency>
    2. 在你需要查詢出來的時間的資料庫欄位對應的實體類的屬性上新增@JsonFormat

      import java.util.Date;
       
      import com.fasterxml.jackson.annotation.JsonFormat;
       
      public class TestClass {
       
        //設定時區為上海時區,時間格式自己據需求定。
        @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
        private Date testTime;
       
        
        public Date gettestTime() {
          return testTime;
        }
       
        public void settestTime(Date testTimee) {
          this.testTime= testTime;
        }
      }

      這裡解釋一下:@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")

      pattern:是你需要轉換的時間日期的格式

      timezone:是時間設定為東八區,避免時間在轉換中有誤差

      提示:@JsonFormat註解可以在屬性的上方,同樣可以在屬性對應的get方法上,兩種方式沒有區別

    3. 完成上面兩步之後,我們用對應的實體類來接收資料庫查詢出來的結果時就完成了時間格式的轉換,再返回給前端時就是一個符合我們設定的時間格式了

  2. 註解@DateTimeFormat

    1. @DateTimeFormat的使用和@jsonFormat差不多,首先需要引入是spring還有jodatime,spring我就不貼了

      <!-- joda-time -->
              <dependency>
                  <groupId>joda-time</groupId>
                  <artifactId>joda-time</artifactId>
                  <version>2.3</version>
              </dependency>
    2. 在controller層我們使用spring mvc 表單自動封裝對映物件時,我們在對應的接收前臺資料的物件的屬性上加@@DateTimeFormat

      @DateTimeFormat(pattern = "yyyy-MM-dd")
      @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
      private Date symstarttime;
       
      @DateTimeFormat(pattern = "yyyy-MM-dd")
      @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
      private Date symendtime;

      我這裡就只貼這兩個屬性了,這裡我兩個註解都同時使用了,因為我既需要取資料到前臺,也需要前臺資料傳到後臺,都需要進行時間格式的轉換,可以同時使用

    3. 通過上面兩個步驟之後,我們就可以獲取一個符合自定義格式的時間格式儲存到資料庫了

  3. 總結:

    註解@JsonFormat主要是後臺到前臺的時間格式的轉換

    註解@DataFormAT主要是前後到後臺的時間格式的轉換

    ————————————————
    版權宣告:本文為CSDN博主「騎車騎車減肥了」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
    原文連結:https://blog.csdn.net/dinghqalex/article/details/46009911