Java前后端时间格式的转化方式

 更新时间:2021年08月10日 16:55:41   作者:给变量取个好名吖  
这篇文章主要介绍了Java前后端时间格式的转化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JsonFormat、DateTimeFormat使用

从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题。

其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日期等,这个时候前台传递给后台的时间格式同样是不一致的,而我们的与之对应的便有了另一个注解,@DataTimeFormat便很好的解决了这个问题,接下来记录一下具体的@JsonFormat与DateTimeFormat的使用过程。

@JsonFormat

导入依赖

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.8.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.8</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

在你需要查询出来的时间的数据库字段对应的实体类的属性上添加 @JsonFormat

@Data
@Api("升级日志返回值")
public class UpgradeLogRes {
    @ApiModelProperty("升级日志id")
    private Long id;
    @ApiModelProperty("版本名称")
    private String name;
    @ApiModelProperty("发布日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date postDate;
    @ApiModelProperty("内容日志")
    private String contentLog;
    @ApiModelProperty("发布状态")
    private Integer postStatus;
    @ApiModelProperty("内容日志Url")
    private String contentLogUrl;
}

注:@JsonFormat(pattern=“yyyy-MM-dd”,timezone = “GMT+8”)

pattern:是你需要转换的时间日期的格式

timezone:是时间设置为东八区,避免时间在转换中有误差

提示:@JsonFormat注解可以在属性的上方,同样可以在属性对应的get方法上,两种方式没有区别

@DateTimeFormat

导入依赖:@DateTimeFormat的使用和@jsonFormat差不多,首先需要引入是spring还有jodatime,spring我就不贴了

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.3</version>
    </dependency>

在controller层我们使用spring mvc 表单自动封装映射对象时,我们在对应的接收前台数据的对象的属性上加@DateTimeFormat

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symstarttime;
 
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symendtime;

我这里就只贴这两个属性了,这里我两个注解都同时使用了,因为我既需要取数据到前台,也需要前台数据传到后台,都需要进行时间格式的转换,可以同时使用

总结一下:

  • 注解@JsonFormat主要是后台到前台的时间格式的转换
  • 注解@DataFormAT主要是前后到后台的时间格式的转换

java前后端Date接收

1.前端传Date对象

将其转为“yyyy-MM-dd HH:mm:ss”的字符串,后台用@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)格式化Date属性

2.后台返回给前端Date

传的是时间戳,用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)对其格式化,

timezone是用于调整时区的属性(东八区),不加的话得到的时间会比实际的少8个小时

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;

3.时间比较:

mybaties :

startTime, endTime是经过@DateTimeFormat格式后的Date对象

 <if test="startTime != null">
       and alarm.createTime &gt;= #{startTime}
</if>
<if test="endTime != null">
       and alarm.createTime &lt;= #{endTime}
</if>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java几种常用JSON库性能比较详解

    Java几种常用JSON库性能比较详解

    这篇文章主要介绍了Java几种常用JSON库性能比较详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • SpringBoot MongoDB详细使用教程

    SpringBoot MongoDB详细使用教程

    这篇文章主要介绍了SpringBoot整合Mongodb实现简单的增删查改,MongoDB是一个以分布式数据库为核心的数据库,因此高可用性、横向扩展和地理分布是内置的,并且易于使用。况且,MongoDB是免费的,开源的,感兴趣的朋友跟随小编一起看看吧
    2022-10-10
  • 每日六道java新手入门面试题,通往自由的道路

    每日六道java新手入门面试题,通往自由的道路

    这篇文章主要为大家分享了最有价值的6道java面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 学习spring事务与消息队列

    学习spring事务与消息队列

    这篇文章主要为大家详细介绍了spring事务与消息队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 利用微信小程序+JAVA实现微信支付的全过程

    利用微信小程序+JAVA实现微信支付的全过程

    微信支付是一种在线支付解决方案,允许用户通过微信内的支付功能进行付款,下面这篇文章主要给大家介绍了关于利用微信小程序+JAVA实现微信支付的相关资料,需要的朋友可以参考下
    2024-08-08
  • SpringMVC中的表现层结果封装

    SpringMVC中的表现层结果封装

    这篇文章主要介绍了SpringMVC中的表现层结果封装,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 关于MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据)

    关于MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据)

    这篇文章主要介绍了MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • spring boot中使用http请求的示例代码

    spring boot中使用http请求的示例代码

    本篇文章主要介绍了spring boot中 使用http请求的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 聊聊Redis的单线程模型

    聊聊Redis的单线程模型

    Redis是单线程,主要是指Redis的网络IO和读写是由一个线程来完成的,但Redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。这不是本文讨论的重点,有个印象即可
    2022-12-12
  • Servlet和Filter之间的区别与联系

    Servlet和Filter之间的区别与联系

    这篇文章主要介绍了Servlet和Filter之间的区别与联系的相关资料,需要的朋友可以参考下
    2016-05-05

最新评论