关于解决Spring中格式化日期输入输出问题
程序员文章站
2022-05-05 14:49:06
...
最近在把以前的一个项目重构,想起来以前在Spring中关于日期的格式化输入输出一直无法解决的问题;趁着最近有空把这个问题解决一下;
输出:从spring格式化输出Date类型的日期只要再get方法上添上注解即可;引用com.fasterxml.jackson.annotation的
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
输入:在前端使用JSON.stringify来格式化数据会导致日期被减八小时,因为JSON.stringify对日期的格式化时会转化为国际时间,因此需要修改JSON.stringify对于日期的格式化;使用下面这段代码可以对时间格式化输出【该代码从其他博客转载】
/**
* 日期转换
* @param date
* @param fmt
* @returns {*}
*/
function dateFormat(date, fmt) {
if (null == date || undefined == date) return '';
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"S": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
/**
* 格式化JSON.stringify 如果不格式化的是日期是utc时区
* @returns {*}
*/
Date.prototype.toJSON = function () {
return dateFormat(this, 'yyyy-MM-dd hh:mm:ss')
}