首先我们先来说一下,为什么后端返回的是时间戳,而不直接返回一个具体的时间给我们:因为时间的格式有很多种,不同的页面可能对不同的时间显示需求不同。比如05-8-8 上午9:17 2005-8-8 9:17:42 2005年8月8日 上午09时17分42秒2005年8月8日 09时17分42秒 GMT+08:00传字符串的话前端怎么知道你传的是哪种格式的,他没办法解析你的字符串。不如直接传时间戳再由前端转化成他想要的格式。至于前端传给后台,其实正常来说也应该传时间戳的,只是你传字符串也被Springmvc转化成Date格式了的,要是你直接用Servlet来写,传的字符串肯定是不会被转化成Date的。
所以,后端给前端页面返回时间戳是为好让前端页面更灵活的展示时间。
定义:Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如Linux系统),也在许多其他操作系统中被广泛采用。
//时间格式化
export function dateFormat(fmt, date) {
let ret;
const opt = {
"y+": date.getFullYear().toString(), // 年
"M+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"h+": date.getHours().toString(), // 时
"m+": date.getMinutes().toString(), // 分
"s+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
};
};
return fmt;
}
使用方法,假如后端传过来一个时间戳: time = 1514345477;
//1、首先将时间戳转换成 date时间对象
let date = new(time*1000);
此时打印 date 就是中国标准时间: Wed Dec 27 2017 11:31:17 GMT+0800 (中国标准时间)
//因为时间戳是以秒计算的,date时间是以毫秒计算的,所以这里要乘以1000
//2、dateFormat(‘yy-MM-dd hh:mm:ss’,date)
然后最后打印的就是:2017-12-27 11:31:17 这样的时间格式