时间格式问题好像是挺复杂的一个问题,但操作起来其实也不难,后台接收时间的时候要看前台传过来的格式是什么样子的,最近有遇到这个问题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;
}
两种方法选一种即可解决问题了