Could not read document: Failed to parse Date value ‘2020-07-15 11:29:46‘

本文介绍了解决前后端时间格式不一致导致的解析错误的方法,通过在前端使用datetimepicker插件进行时间格式转换,并在后端使用@DateTimeFormat和@JsonFormat注解来指定时间格式。

时间格式问题好像是挺复杂的一个问题,但操作起来其实也不难,后台接收时间的时候要看前台传过来的格式是什么样子的,最近有遇到这个问题
Could not read document: Failed to parse Date value '2020-07-15 11:29:46'

我的解决方式是这样的:

1.前台在操作的时候加了一个时间格式的转换

//时间格式转换
	 $('#YourId').datetimepicker({
		language : 'zh',
		format : "YYYY-MM-DD HH:mm:ss",
		weekStart : 1,
		todayBtn : 1,
		autoclose : 1,
		todayHighlight : 1,
		startView : 2,
		forceParse : 0,
		showMeridian : 1
	}).on('changeDate', function(ev) {
		$(this).datetimepicker('hide');
	});	 

显然,前台传过来的是YYYY-MM-DD HH:mm:ss可能有同学会说,是小写的mm和dd,不错我们在后台接收的时候需要用这个格式,那么这里有两种方法:

一、在实体类中加入

如果我们在后台Java代码中接口方法中的参数是实体中的字段,那么我们可以在实体类中找到该字段并在该字段前加入如下代码

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

例如

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date   dateTestOne;

	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date  dateTestTwo;

这样就OK了,前后的格式就一致了,就不会报错了

二、在参数前直接插入

如果后台接口方法中的参数并非字段,那么可以直接在字段前插入上述@DateTimeFormat@JsonFormat,例如

@RequestMapping(value = { "/xxx" }, method = RequestMethod.GET)
	public @ResponseBody String DateTest(HttpServletRequest req,
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date dateTestOne,
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date dateTestTwo)
	{
		return xxx;
	}

两种方法选一种即可解决问题了

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我姜同学

何其幸运遇见你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值