模仿京东消息页面右侧的时间,将今天的时间转化为时分,昨天显示昨天,一周之内转化为星期,之前的时间显示年月日。
有微信小程序版本和js通用版本,仅供参考:
1.微信小程序版本:
// 1. 首先在wxs里面定义函数(注意只能写ES5版本代码)
function returnDiyDate(datetime) {
var timeStamp = getDate().setHours(23, 59, 59, 0) / 1000; // 今天23:59:59秒数
var eTime = 24 * 60 * 60; //一天时间秒数
var tTime = getDate(datetime).getTime() / 1000; // 传来的时间秒数
// var yTime = timeStamp - eTime; //昨天23:59:59时间秒数
// var byTime = timeStamp - 2 * eTime; //前天23:59:59时间秒数
var currentTime = timeStamp - tTime
var date = getDate(datetime);
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var hour = date.getHours()
var minute = date.getMinutes()
if (currentTime < eTime) {
return [hour, minute].map(formatNumber).join(':') // 展示今天的时分
} else if (currentTime >= eTime && currentTime < 2 * eTime) {
return '昨天' // 展示昨天
} else if (currentTime >= 2 * eTime && currentTime < 7 * eTime) {
var nowWeek = getDate(datetime).getDay();
var arr = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
var week_one = arr[nowWeek]
return week_one // 展示星期
} else {
return [year, month, day].map(formatNumber).join('/'); // 展示年月日
}
function formatNumber(n) { // 补零的函数
n = n.toString()
return n[1] ? n : '0' + n
}
}
// 导出函数
module.exports = {
returnDiyDate:returnDiyDate
}
// 2. 页面上使用函数
// 在wxml文件的最下方引入wxs文件
<wxs module="filter" src="../../../wxs/filter.wxs"></wxs>
// 在标签内进行调用函数
filter.returnDiyDate('2022-11-09 10:10:10')
2. js通用版本(ES6和ES5都可以写,可自行改动)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
Date.prototype.format = function (format) {
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"S": this.getMilliseconds()
}
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
};
/*
* pattern 格式字符串,例如:yyyy-MM-dd hh:mm:ss
*/
function getFormatDateByLong(l, pattern) {
return getFormatDate(new Date(l), pattern);
};
function getFormatDate(date, pattern) {
if (date == undefined) {
date = new Date();
}
if (pattern == undefined || pattern == "") {
pattern = "yyyy-MM-dd hh:mm:ss";
}
return date.format(pattern);
};
//时间格式转换
function returnDiyDate(date) {
var timeStamp = new Date().setHours(23, 59, 59, 0) / 1000; // 今天23:59:59秒数
console.log(timeStamp);
var eTime = 24 * 60 * 60; //一天时间秒数
var tTime = new Date(date).getTime() / 1000; // 传来的时间秒数
// var yTime = timeStamp - eTime; //昨天23:59:59时间秒数
console.log(yTime);
// var byTime = timeStamp - 2 * eTime; //前天23:59:59时间秒数
var currentTime = timeStamp - tTime
if (currentTime < eTime) {
return getFormatDateByLong(new Date(date).getTime(), "hh:mm");
} else if (currentTime >= eTime && currentTime < 2 * eTime) {
return '昨天'
}else if(currentTime >= 2 * eTime && currentTime < 7 * eTime) {
let nowWeek = new Date(date).getDay();
let arr=['周日','周一','周二','周三','周四','周五','周六']
let week_one=arr[nowWeek]
return week_one
}else {
return getFormatDateByLong(new Date(date).getTime(), "yyyy/MM/dd");
}
};
var l = '2022-11-10 10:59:59'; // 定义时间
console.log(returnDiyDate(l)); // 调用函数打印结果
</script>
</body>
</html>