在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)完成

成功!

Swagger--解决日期格式显示为Unix时间戳格式 UTC格式的更多相关文章

  1. Swagger -- 解决日期不正确

    继  Swagger--解决日期格式显示为Unix时间戳格式 UTC格式 这篇博客解决的日期格式后又发现了一个问题 问题 查询出来的时间没有注意到足足少了8个小时,如图 解决 其实这个问题不是Swag ...

  2. JS UNIX 时间戳与时间格式转换

    上代码,不多说了,这个没啥说的,记录一下: var date = new Date() // Date 2019-03-05T13:50:39.775Z // 获取1970 至今的毫秒数 var ti ...

  3. MySql 格式化时间(包括正常时间格式与unix时间戳的互相转换)

    函数:FROM_UNIXTIME 作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示.语法:FROM_UNIXTIME(unix_timestamp ...

  4. Jquery实现日期转换为 Unix时间戳及时间戳转换日期

    (function ($) { $.extend({ myTime: { /** * 当前时间戳 * @return <int> unix时间戳(秒) */ CurTime: functi ...

  5. c# dateTime格式转换为Unix时间戳工具类

    using System; using System.Collections.Generic; using System.Text; namespace TJCFinanceWriteOff.BizL ...

  6. c# datetime与 timeStamp(unix时间戳) 互相转换

    /// <summary> /// Unix时间戳转为C#格式时间 /// </summary> /// <param name="timeStamp" ...

  7. C#DateTime与Unix时间戳的转换

    /// <summary> /// Unix时间戳转为C#格式时间 /// </summary> /// <param name="timeStamp" ...

  8. c#DateTime与unix时间戳互相转换

    public class UnixTimeUtil { /// <summary> /// 将dateTime格式转换为Unix时间戳 /// </summary> /// & ...

  9. php UNIX时间戳转换为指定日期格式

    用函数: date() 一般形式:date('Y-m-d H:i:s', unix时间) $date_unix=time();//获取当前时间,unix时间戳 echo 'Unix时间:'.$date ...

随机推荐

  1. 欢迎加入强哥的 Android 开发交流群

    最近建了一个 Android 开发交流群,但不限于交流移动端.前端和后端等相关技术. 本群的宗旨:让所有学习的群友都有进步的机会. 1. 经验交流 在我们学习时遇到困境,或者开发过程中遇到难题,都可以 ...

  2. mysql创建数据库指定字符集和校对规则

    mysql创建数据库的语法格式: CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] ...

  3. eclipse与hadoop集成,运行wordCount1

    搭好了hadoop集群之后,就该使用它了 第一步:下载hadoop eclipse的插件,将它放到eclipse\plugins的目录下,然后重启eclipse,点击windows->show ...

  4. 03-body标签中的部分标签

    一.字体标签 标题标签h1-h6 h1定义最大的标题,h6定义最小的标题,一般一个页面中h1只能出现一次,尽量标题不要超过三级.h标签具有align属性,属性值分别是:left.center.righ ...

  5. One layer SoftMax Classifier, "Handwriting recognition"

        import lib needed¶ In [1]: from PIL import Image import numpy as np import matplotlib.pyplot as ...

  6. JavaScript 类型 检测

    前言 ECMAScript中有5种数据类型,分别为Number,Boolean,Null,Undifined和String,以及一种复杂的数据类型Object(由名值对组成,是这门语言所有对象的基础类 ...

  7. Linux内存描述之内存节点node–Linux内存管理(二)

    日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.7 X86 & arm gatieme LinuxDeviceDrivers Linux内存管理 #1 ...

  8. MakaJs:基于 React, Redux 的轻量级前端框架

    github: maka.js 留下您宝贵的STAR!谢谢 maka maka源于中文码咖,意为写代码的大咖 一眼即可看懂的前端框架,简约而不简单 1.安装 bash sudo npm i -g @m ...

  9. 1.C&DataStructure引言

    使用过C++ <STD> 库的猿友们应该都觉得 C++中那些已经实现好了的数据类型封装使用让人很是舒服; 例如 vector 支持自动扩充数组,支持模板类,任何数据类型都可以 简单的管理, ...

  10. 什么是STM32的ISP?

    上一篇笔记分享了STM32的串口IAP实例:STM32串口IAP分享.其中,下载IAP程序时用ISP的方式进行下载.这里的ISP又是什么呢? ISP方式下载程序原理 ISP:In System Pro ...