一分钟内显示 1分钟前
一小时内显示 xx分钟前
今天之内的显示 xx:xx
昨天的显示 昨天xx:xx
昨天之前,今年之内 xx月xx日
今年之前的显示 xx年xx月xx日
废话少说,上代码
export default {
convertDate: (timestamp) => {
// 当前时间
var nowDate = new Date();
// 分 xx分
var nowMinutes = nowDate.getMinutes();
// 时 xx时
var nowHours = nowDate.getHours();
// 日
var nowDays = nowDate.getDate();
// 月 getMonth()取得月份是从0开始的,所以要+1
var nowMonths = nowDate.getMonth() + 1;
// 年
var nowYears = nowDate.getFullYear();
// 需要转化的时间对象
var formatDate = new Date(timestamp);
var minutes = formatDate.getMinutes();
var minutesShow = ('0' + formatDate.getMinutes()).substr(-2);
var hours = formatDate.getHours();
var hoursShow = ('0' + formatDate.getHours()).substr(-2);
var days = formatDate.getDate();
var months = formatDate.getMonth() + 1;
var years = formatDate.getFullYear();
// 进行比较
if(years <= nowYears){
//今年的数据
if(years == nowYears){
// 比较月份
if(months == nowMonths){
// 比较日
if(days == nowDays){
// 一天以内
// 比较小时
if (nowHours == hours){
// 一小时内
if(minutes == nowMinutes){
return '1分钟前'
}else if(minutes < nowMinutes){
return (nowMinutes - minutes) + '分钟前';
}else {
// 走到这里逻辑上也是不通的,可做其他处理
return false;
}
}else if(hours < nowHours){
//一个小时以内
if(((nowHours - hours)*60 - minutes + nowMinutes) < 60){
return (nowHours - hours)*60 - minutes + nowMinutes + '分钟前';
}else {
return hoursShow + ':' + minutesShow;
}
}else{
// 走到这里逻辑上也是不通的,可做其他处理
return false;
}
}else if(days < nowDays){
// 昨天的数据
if((nowDays - days) == 1){
return '昨天' + hoursShow + ':' + minutesShow;
}else {
return months + '月' + days + '日';
}
}else {
// 走到这里逻辑上也是不通的,可做其他处理
return false;
}
}else if (months < nowMonths){
// 5月6日
return months + '月' + days + '日';
}else {
// 走到这里逻辑上也是不通的,可做其他处理
return false;
}
}else {
// 不是今年的,直接返回 xxxx年xx月xx日
return years + '年' + months + '月' + days + '日';
}
}else {
// 逻辑上该时间对象为今年以后的,逻辑走不通,该数据有问题,可做其他处理
return false;
}
}
}
这个是写在一个date.js自定义文件里面
<script>
import utilDate from'@/util/date.js'
</script>
可以在vue里面引用,直接用utilDate.convertDate(时间对象)就可以用了。