前端在日常开发中经常需要对时间进行一系列的处理,比如吧正常时间转化为昨天,今天,明天,后天等方式显示,其余时间显示月份日期,时间等,这时候写一个公共方法来转化,即高效又优雅,话不多说,看代码,注释都在代码里了
//后台获取时间列表:
getList() {
let project = [
{
name: "京东当日达",
time: "2022-07-04 10:32:16",
price: "30.00",
},
{
name: "京东次日达",
time: "2022-07-05 11:52:16",
price: "26.00",
},
{
name: "京东特快送",
time: "2022-07-06 13:30:16",
price: "20.00",
},
{
name: "京东超快送",
time: "2022-07-08 08:08:16",
price: "18.00",
},
{
name: "京东配送",
time: "2022-07-12 23:59:16",
price: "12.00",
}
];
project.forEach((item) => {
item.myTime = this.getTime(item.time);
});
},
//时间格式进行处理
getTime(strtime) {
let date = new Date(strtime.replace(/-/g, "/"));
// date 预计送达时间戳
date = Date.parse(date);
// 转为国际标准时间
let time = new Date(parseInt(date));
// 一共相差几天
let days = parseInt((date - new Date().getTime()) / 86400000);
// 今天是几号
let today = new Date().getDate();
let mouth = time.getMonth() + 1;
// 预计送达是几号
let day = time.getDate();
let hour = time.getHours() < 10 ? "0" + time.getHours() : time.getHours();
let min = time.getMinutes() < 10 ? "0" + time.getMinutes() : time.getMinutes();
// offset 送达日期-今天日期差
let offset = Math.abs(day - today);
let obj = {
// 日期
date: "",
// 具体时间
time: hour + ":" + min,
};
// 这里双重判断,第一个判断days < 3是验证是否在同一个月,第二个offset < 3是判断是验证相差是几天
if (days < 3 && offset < 3) {
if (offset === 0) {
obj.date = "今天";
} else if (offset === 1) {
obj.date = "明天";
} else if (offset === 2) {
obj.date = "后天";
}
} else {
obj.date = mouth + "月" + day + "日"
}
return obj;
},
组件经常用到建议收藏,写的比较简单,有复制业务逻辑扩展起来也方便,觉得有用记得一键三连哈!