当前位置:  开发笔记 > 编程语言 > 正文

招摇日期字段与日期时间字段

如何解决《招摇日期字段与日期时间字段》经验,为你挑选了2个好方法。

我正在使用swagger测试我的其余api,我的实体类的属性之一是日期字段,我需要yyyy-mm-dd格式的日期,但swagger模型架构将此字段显示为日期时间而不是日期字段,因此它给出了时间和区域的日期.如何将此日期时间转换为日期字段?

我有一个java实体类TimeEntry.java,它的一个属性是Date,它看起来像这样.

@ApiModelProperty(required = true)
@JsonFormat(pattern = DATE_FORMAT)
private Date date;

对于此字段,在swagger UI模型架构上,字段日期显示为"日期":"2016-01-08T22:34:22.337Z"但我需要将其作为"日期":"2016-01-08".

我尝试过以下方法:

1.

@ApiModelProperty(required = true, dataType="date")  
@JsonFormat(pattern = DATE_FORMAT)   
private Date date;

2.Tried跟随这段代码(覆盖OverrideConvertor类)但找不到swagger-core 1.3版本的mvn repo.仅提供1.5版本https://github.com/swagger-api/swagger-core/wiki/overriding-models

    显然,从1.5版本开始,他们删除了OverrideConvertor类 https://groups.google.com/forum/#!topic/swagger-swaggersocket/ChiknyHZiP4

请帮忙.



1> fehguy..:

问题(实际上存在的问题之一)java.util.Date是它确实是一个日期时间,并且swagger正确地检测它.我确实理解这@JsonFormat也是一种解决方法 - 在它的类型检测期间,swagger不支持该注释.

您有三个选项可以正确处理日期类型.

1)使用Joda LocalDate作为数据类型.如果您声明private LocalDate date,它将正确显示.

2)使用java8 LocalDate,与上面相同.

3)在检测注释中的类型时,告诉swagger使用上述任何一种,但保持属性类型java.util.Date:

@ApiModelProperty(required = true, dataType = "org.joda.time.LocalDate")

然后,在扫描时,swagger会将其检测为date格式化字符串.



2> Sourav..:

我的队友找到了解决办法.我们需要将springfox版本升级到2.3.0,之前我们使用的是springfox 2.2.2版本.在旧版本中,swagger的@ApiModelPreporty具有名为"example"的属性,该属性没有做任何事情.从版本2.3.0版本开始,这个"示例"开始工作.因此,在我们将springfox版本升级到2.3.0之后,我们所要做的就是如下所示.

@ApiModelProperty(required = true,example = "2016-01-01")
@JsonFormat(pattern = DATE_FORMAT)
private LocalDate date; 

以下是我们发现此信息的链接:

https://github.com/springfox/springfox/issues/998

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有