在swagger UI模型架構上,字段日期顯示爲「日期」:「2018-10-15T09:10:47.507Z」但我須要將其做爲「日期」:「2018-9-26 12:18:48」。java
tips:如下這兩種格式只是簡單瞭解了一下不是很全面,有不足或不對的地方請指出。 web
首先先看一下swagger默認顯示的Date類型是這樣的(這裏示例代碼默認顯示的當前日期的UTC 可能和後面演示的不同)spring
這是標準的 XML Schema的"日期型數據格式」
T是表明後面跟着「時間」。Z表明0時區,或者叫UTC統一時間(UTC通用標準時)。json
而後運行結果返回JSON數據格式時顯示成這樣的架構
這裏字體顏色和圖片搞得好惡心只能改變一下字體顏色了 將就看下哈工具
這個格式沒搞懂到底算是什麼數據格式,找到一個叫Unix時間戳(Unix timestamp)的格式挺像的 (區別在於他在後面多添加了3個0 個人理解)測試
爲了演示個人推斷再來一個時間戳字體
去除後面的3個0爲ui
這個是測試轉換連接: Unix時間戳轉換工具 (能夠本身測試一下)spa
首先確定是能夠直接在後臺轉換的
這個百度也有的,話很少說上代碼
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))); }
運行結果爲
可是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)完成
成功!