java如何给数据库数据设置时间并回显时间;已经java设置当天最大时间传入数据无效问题

做项目时遇到的设置结束时间问题,java设置当天最大时间传入数据无效

一、首先如何从后台拿时间传给前台,前台又如何传给后台的

前端使用wdatepicker控件
首先前端使用wdatepicker控件,选中的为日期,前端的value为yyyy-MM-dd格式
在这里插入图片描述

这时后端POJO类要设置这两个注解:JsonFormat和DateTimeFormat这两个注解,


@ApiModelProperty(value = "申报开始时间")
    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")*
    @DateTimeFormat(pattern="yyyy-MM-dd")*
 @TableField("OPEN_START_TIME")
 private Date openStartTime;

此时虽然前端的value为yyyy-MM-dd,但是设置了这两个注解后,就会变成了英文格式,

Wed Feb 09 00:00:00 CST 2022

存入数据库后,会变为yyyy-MM-dd HH:mm:ss的形式,由于此时传的是日期,没有时分秒,所以时分秒为0
在这里插入图片描述

二、存的日期但是要改变某个时间怎么办

DateTimeFormat和JsonFormat注解一个是做数据库回显的,一个是做前端传给后端的,并没有涉及后端到数据库的流程。所以与他们没有关系。
我们公司使用了hutool的日期操作工具类----DateUtil
用来操作日期

一开始用的这个方法,

DateUtil.endOfDay(project.getOpenEndTime()).toJdkDate();

为啥要用toJdkDate()呢?
因为要把时间格式变为
Wed Feb 09 00:00:00 CST 2022
而不是
2022-03-09

此时值为当天的 23:59:59 ,看起来并没有问题,但是!
传到了数据库就自动变为整数了(用回上一张图,这里日期应为03-10而不是02-05)
在这里插入图片描述
后面查找资料发现,是由于mysql自己的问题,会把传过来的时间自动加1秒,一天最后的时间加了1秒那不就是变成了第二天了么?!

于是后面用了这个方法,指定了设为第23个小时,当然没有hutool的工具类也可以用别的工具类设置

project.setOpenEndTime(DateUtil.offsetHour(project.getOpenEndTime(), 23));

这时可以了,由于mysql会把传过来的时间自动加1秒,所以最好不要用一天最后的时刻这个方法。而是自己手动设值

参考了这位大神的博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值