SpringBoot接收前端日期不准确问题

最近遇到一个问题,数据库字段为datetime,前端form表单直接展示过后保存入库,结果日期自己变化了,要么日期增加了一天,要么小时增加了两小时。

通过request.getParamater("createDate")获取到的参数和springBoot自己封装的createDate(java Date类型)后的参数不相等。

request.getParamater("createDate")获取到的值是和前端相同,是正确的。因此讲问题定位为springBoot参数转换为Date类型时出错。

解决办法:自定义一个参数日期转换器

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;

/**
 * 自定义传入日期转换器
 * 用以解决前端提交时间数据,后台date字段接收转换不准确的问题
 */
@Configuration
public class DateConverConfig {
	@Bean
	public Converter<String, Date> stringDateConvert() {
		return new Converter<String, Date>() {
			@Override
			public Date convert(String source) {
				//yyyy-MM-dd HH:mm:ss日期字符串转换为Date类型
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				Date date = null;
				try {
					date = sdf.parse((String) source);
				} catch (Exception e) {
					//yyyy-MM-dd日期字符串转换为Date类型
					sdf = new SimpleDateFormat("yyyy-MM-dd");
					try {
						date = sdf.parse((String) source);
					} catch (ParseException e1) {
						//EEE MMM dd HH:mm:ss Z yyyy字符串转换为Date类型
						sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
						try {
							date = sdf.parse((String) source);
						} catch (ParseException e2) {
							e2.printStackTrace();
						}
					}
				}
				return date;
			}
		};
	}

}

这样就能解决日期变化的问题。

如果有更好的解决办法,或者是本文有不对之处,敬请批评指正!

【四川乐山程序员联盟,欢迎大家加群相互交流学习5 7 1 8 1 4 7 4 3】


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值