vue+elementui+springboot+jersey+mysql时区总结

本文介绍了如何解决前端el-date-picker获取的日期在传输到Java端时出现的一天偏差问题,通过统一前后端及数据库的时区来确保日期正确无误。

问题:从前端el-date-picker控件得到的日期,传到java端日期减少一天,存到数据库中又减少一天。

主要原因:主要是前后端数据库时区不统一导致。

解决:将时区统一(或全部使用字符串,这里只介绍时区)。

自定义类CommonConst统一设置时区字符串

public static final String JAVA_TIME_ZONE = "CST";

1、前端将从控件得到的时间对象格式化成字符串传到后台,否则虽然看上去日期是正确的但是传送的时候会少一天。用字符串比较妥当。

var begindate = formatDate(this.datediff[0], 'yyyy-MM-dd') || ''

formatDate函数参考:

145339_8EV8_3295928.png

2、后端jersey接收时设置时区和格式

@JsonFormat(timezone = CommonConst.JAVA_TIME_ZONE, pattern = "yyyy-MM-dd")
@FormParam("enddate")
private Date enddate;

也可以使用java转换

DateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd");
dataFormat.setTimeZone(TimeZone.getTimeZone(CommonConst.JAVA_TIME_ZONE));
Date beginDate = null;
Date endDate = null;
try {
    beginDate = dataFormat.parse(beginDateStr);
    endDate = dataFormat.parse(endDateStr);
} catch (ParseException e) {
    e.printStackTrace();
}

3、数据库的时区最好也统一,可以通过修改连接字符串serverTimezone参数实现:

jdbc:mysql://*******:3506/*****?useUnicode=true&characterEncoding=utf-8&serverTimezone=CST&useSSL=true

转载于:https://my.oschina.net/u/3295928/blog/1806827

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值