在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. java数据结构——二叉树(BinaryTree)

    前面我们已经学习了一些线性结构的数据结构和算法,接下来我们开始学习非线性结构的内容. 二叉树 前面显示增.删.查.遍历方法,完整代码在最后面. /** * 为什么我们要学习树结构. * 1.有序数组插 ...

  2. mysql5.6.27压缩版安装配置指南【个人总结】

      1..下载准备压缩包   360云盘下载地址: https://yunpan.cn/cPKyugkUcDEmP  访问密码 375b   2.解压缩,将压缩版解压到D盘 D:\mysql-5.6. ...

  3. java-ztest测试报告的搭建,python-BeautifulReport

    今天用testng的时候感觉测试报告贼丑又慢,以下图片是对比.了解到ztest,搭建的时候发现网上没有教程,对java真是太不友好了,所以步骤记录下吧.有疑问的可进群:231733032 使用ztes ...

  4. 报表统计——java实现查询某年12个月数据,没数据补0

    一般图表绘制例如echarts等,返回数据格式都大同小异.重点是利用sql或者java实现数据格式的转型,接下来是关键部分: 1.mapper层sql语句,返回统计好的月份与对应月份的数据. < ...

  5. SpringBoot 定时任务实现方式

    定时任务实现的几种方式: Timer:是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但 ...

  6. [Mathematics][MIT 18.03] Proof of a Theory about the Solution to Second-order Linear Homogeneous Differential Equation

    At first, I'd like to say thank you to MIT open courses which give me the privilege to enjoy the mos ...

  7. MongoDB4.0支持事务管理

    ​ 背景 最后我们看一下MongoDB的事务管理,本来是没这一篇的,因为网上大部分资料太老,都为MongoDB之前的版本,的确在MongoDB 4.0版本之前是没有事务管理,但是今天年初MongoDB ...

  8. .Net Core 商城微服务项目系列(十四):分布式部署携程Apollo构建配置中心

    一.开场白 在系统设计里我们有很多配置希望独立于系统之外,而又能够被系统实时读取.但是在传统的系统设计里,配置信息通常是耦合在系统内的,比如.net里通常会放在App.config或者web.conf ...

  9. ThinkPHP框架快速开发网站

    使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助 ...

  10. 记一次arch滚挂后,更换lts内核

    背景 因为arch的滚动升级模式,每天pacman -Syu已经是一种习惯了(虽然我是使用yay的),升级过程中会连内核一起升级,但不会立刻生效,通常要等到下次重启时才会生效. 因为此前使用的是有一点 ...