Swagger--解決日期格式顯示為Unix時間戳格式 UTC格式


在swagger UI模型架構上,字段日期顯示為“日期”:“2018-10-15T09:10:47.507Z”但我需要將其作為“日期”:“2018-9-26 12:18:48”。

 

tips:以下這兩種格式只是簡單了解了一下不是很全面,有不足或不對的地方請指出。 

問題

首先先看一下swagger默認顯示的Date類型是這樣的(這里示例代碼默認顯示的當前日期的UTC  可能和后面演示的不一樣)

這是標准的 XML Schema的"日期型數據格式”
T是代表后面跟着“時間”。Z代表0時區,或者叫UTC統一時間(UTC通用標准時)。

 

然后運行結果返回JSON數據格式時顯示成這樣的

這里字體顏色和圖片搞得好惡心只能改變一下字體顏色了  將就看下哈

 

    這個格式沒搞懂到底算是什么數據格式,找到一個叫Unix時間戳(Unix timestamp)的格式挺像的 (區別在於他在后面多添加了3個0  我的理解)

 

    為了演示我的推斷再來一個時間戳

    去除后面的3個0為

 

這個是測試轉換鏈接: Unix時間戳轉換工具  (可以自己測試一下)

解決

首先肯定是可以直接在后台轉換的

這個百度也有的,話不多說上代碼

    public static void main(String[] args) throws ParseException {
        // write your code here
        String date = "2018-10-15T09:10:47.507Z";
        date = date.replace("Z", " UTC");
        System.out.println(date);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
        Date d = format.parse(date);
        System.out.println(d);


        String dt= String.valueOf(d);
        SimpleDateFormat sdf1= new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
        SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(sdf2.format(sdf1.parse(dt)));
    }

  運行結果為

@ApiModelProperty

但是Swagger提供了一個注解可以直接搞定——@ApiModelProperty

作用范圍 API 使用位置
對象屬性 @ApiModelProperty 用在出入參數對象的字段上

@ApiModelProperty()用於方法,字段; 表示對model屬性的說明或者數據操作更改 

屬性說明:
      value–字段說明 
      name–重寫屬性名字 
      dataType–重寫屬性類型 
      required–是否必填 
      example–舉例說明 (此示例用它)
      hidden–隱藏

swagger的@ApiModelPreporty具有名為“example”的屬性,在2.3.0之前該屬性沒有做任何事情。從版本2.3.0版本開始,這個“示例”開始工作。

 

下面看一下效果

     private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
	
	@ApiModelProperty(required = true,example = "2018-10-01 12:18:48")
	@JsonFormat(pattern = DATE_FORMAT)
	@Column(name="task_reality_endtime")
	private Date taskRealityEndtime;	//實際結束時間

將Date屬性字段添加@ApiModelProperty注解

添加之后運行   swagger顯示為@ApiModelProperty的example值

但是運行時出現請求錯誤

錯誤信息為

11:45:42.962 [http-nio-8080-exec-5] WARN  o.s.w.s.m.s.DefaultHandlerExceptionResolver - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Can not deserialize value of type java.util.Date from String "2018-10-01 12:18:48": not a valid representation (error: Failed to parse Date value '2018-10-01 12:18:48': Can not parse date "2018-10-01 12:18:48": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS', parsing fails (leniency? null))
 at [Source: (PushbackInputStream); line: 24, column: 25] (through reference chain: com.cn.shrichen.web.worklist.entity.Detail["taskRealityEndtime"]); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.util.Date from String "2018-10-01 12:18:48": not a valid representation (error: Failed to parse Date value '2018-10-01 12:18:48': Can not parse date "2018-10-01 12:18:48": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS', parsing fails (leniency? null))
 at [Source: (PushbackInputStream); line: 24, column: 25] (through reference chain: com.cn.shrichen.web.worklist.entity.Detail["taskRealityEndtime"])

  json格式為yyyy-MM-dd HH:mm:ss

  Date類型默認為yyyy-MM-dd

解決:在Date字段上添加@JsonFormat(pattern = DATE_FORMAT)完成

成功!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM