在开发过程中,绝大可能都会遇到请求服务器,服务器返回的时间数据是以时间戳的方式呈现的,这时候就需要我们将时间戳格式转换为我们生活中正常的时间格式。
1、自己通过Date对象方法的形式拼接。
①首先要将时间戳转换成Date对象,时间戳一般以秒为单位,所以在传给Date时,要乘以1000,如果返回的时间戳是毫秒级的,就不用乘以1000了。
const date = new Date(时间戳*1000)
②拿到Date对象,将此对象转换成对应得字符串。
Date对象有对应的方法:以下列举的是比较常用的几个。
//获取当前年份的后2位
date.getYear();
//获取4位数的完整年份
date.getFullYear();
//获取当前月份,从0-11月,0代表1月,依次下去,所以一般+1才是正常月份数字
date.getMonth();
//获取当前日,从1-31日,正常获取
date.getDate();
//获取当前星期几,从0-6,0代表星期天,其余正常
date.getDay();
//获取当前小时,从0-23点
date.getHours();
//获取当前分钟,从0-59分钟
date.getMinutes();
//获取当前秒,从0-59秒
date.getSeconds();
③从上述方法中自行选择,再进行拼接即可。
2、自己封装一个formatDate(时间戳,"时间输出格式")方法。
时间输出格式: "yyyy-MM-dd hh:mm:ss"
yyyy:代表完整的4位年份数,如果写成yy,那么格式化出来的是两位年份数。
MM:为了与分钟区别开来,用的是大写的M,一般来说是格式化出来两位月份数。
dd:日期数。
hh:时间点数,HH代表24小时制,hh代表12小时制。
mm:分钟数。
ss:秒钟数。
以下代码来源网络,出处不明确,且看且用,感谢创作者!
组件中使用:(记得import一下)
// 假设传入的value是秒级时间戳
showDate: function (value) {
let date = new Date(value * 1000);
return formatDate(date, "yyyy-MM-dd hh:mm");
}
在utils.js中封装一个方法:
function padLeftZero(str) {
return ("00" + str).substr(str.length);
}
// 时间格式化
export function formatDate(date, fmt) {
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
let o = {
"M+": date.getMonth() + 1,
"d+": date.getDate(),
"h+": date.getHours(),
"m+": date.getMinutes(),
"s+": date.getSeconds()
};
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + "";
fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : padLeftZero(str));
}
}
return fmt;
}
以上就可以将服务器返回的时间戳进行格式化了。