uniapp 格式化时间刚刚,几分钟前,几小时前,几天前…

效果如图:

根目录下新建utils文件夹,文件夹下新增js文件,文件内容:

复制代码
export const filters = {
	dateTimeSub(data) {
		if (data == undefined) {
			return;
		}
		// 传进来的data必须是日期格式,不能是时间戳
		//将字符串转换成时间格式
		var timePublish = new Date(data);
		var timeNow = new Date();
		var minute = 1000 * 60;
		var hour = minute * 60;
		var day = hour * 24;
		var month = day * 30;
		var result = "";
	
		var diffValue = timeNow - timePublish;  //时间差
		var diffMonth = diffValue / month;      //月差
		var diffWeek = diffValue / (7 * day);   //周差
		var diffDay = diffValue / day;          //天差
		var diffHour = diffValue / hour;        //时差
		var diffMinute = diffValue / minute;    //分差
	
		if (diffValue < 0) {
			console.log("错误时间");
		} else if (diffMonth > 3) {
			// result = timePublish.getFullYear() + "-";
			// result += timePublish.getMonth() + "-";
			// result += timePublish.getDate();
			// console.log(result);
		} else if (diffMonth > 1) {
			// result = parseInt(diffMonth) + "月前";
		} else if (diffWeek > 1) {
			// result = parseInt(diffWeek) + "周前";
		} else if (diffDay > 3) {
			let y = timePublish.getFullYear();
			let MM = timePublish.getMonth() + 1;
			MM = MM < 10 ? ('0' + MM) : MM; //月补0
			let d = timePublish.getDate();
			d = d < 10 ? ('0' + d) : d; //天补0
			result = y + '-' + MM + '-' + d;
		} else if (diffDay>=1 && diffDay <= 3) {
			result = parseInt(diffDay) + "天前";
		} else if (diffHour > 1) {
			result = parseInt(diffHour) + "小时前";
		} else if (diffMinute > 1) {
			result = parseInt(diffMinute) + "分钟前";
		} else {
			result = "刚刚";
		}
		return result;
	},
    formatDate(value) {
    	if (value == undefined) {
    		return;
    	}
    	// #ifdef APP-PLUS
    		if(plus.os.name == 'iOS') {
    			time = time.replaceAll("-", "/")
    		}
    	// #endif
    	// let date = new Date(value * 1000);
    	let date = new Date(value);
    	//时间戳为10位需*1000,时间戳为13位的话不需乘1000
    	let y = date.getFullYear();
    	let MM = date.getMonth() + 1;
    	MM = MM < 10 ? ('0' + MM) : MM; //月补0
    	let d = date.getDate();
    	d = d < 10 ? ('0' + d) : d; //天补0
    	let h = date.getHours();
    	h = h < 10 ? ('0' + h) : h; //小时补0
    	let m = date.getMinutes();
    	m = m < 10 ? ('0' + m) : m; //分钟补0
    	let s = date.getSeconds();
    	s = s < 10 ? ('0' + s) : s; //秒补0
    	return y + '-' + MM + '-' + d; //年月日
    	// return y + '-' + MM + '-' + d + ' ' + h + ':' + m+ ':' + s; //年月日时分秒
    },
    formatTime(value) {
    	if (value == undefined) {
    		return;
    	}
    	// #ifdef APP-PLUS
    		if(plus.os.name == 'iOS') {
    			time = time.replaceAll("-", "/")
    		}
    	// #endif
    	let date = new Date(value);
    	let MM = date.getMonth() + 1;
    	MM = MM < 10 ? ('0' + MM) : MM; //月补0
    	let d = date.getDate();
    	d = d < 10 ? ('0' + d) : d; //天补0
    	return  MM + '月' + d + '日'; //年月日
    }
}

main.js中引入

复制代码
import Vue from 'vue'

Vue.config.productionTip = false

import { filters } from './utils/time_day.js'
// 定义全局自定义过滤器
Object.keys(filters).forEach(key => {
    Vue.filter(key, filters[key])
})

页面中使用即可

复制代码
<view class="times">{{item.updatetime | getDateDiff}}</view>
相关推荐
码间留白3 天前
六轮真机实验后,我把鸿蒙直播推流的 UI 全逼成了原生——uni-app 适配 HarmonyOS NEXT 完整复盘
uni-app·鸿蒙·harmonyos next·直播推流·arkts/arkui
wuxianda10304 天前
2026 苹果审核 4.3 (a) 被拒全解析|Guideline 4.3a spam 马甲包拒审原因 + 避坑方案
flutter·uni-app·苹果上架
头发还在的女程序员6 天前
基于 Spring Boot + Vue 3 + uni-app 的灵活用工系统:四端架构与业务流程设计
vue.js·spring boot·uni-app·灵活用工·灵工系统
Dumbness8 天前
订阅消息弹窗必须在用户点击里调:联调实验室里 timing 和 Mock 支付通知踩的坑
javascript·uni-app
码间留白9 天前
uni-app 鸿蒙离线打包:一个改动从源码到真机要穿过几条链
uni-app·鸿蒙·deveco·离线打包·uts插件
多客:duokelijie9 天前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
码间留白10 天前
鸿蒙端对接 BLE 血压计:从一次握手到读数入库(二)设备篇
物联网·uni-app·鸿蒙·蓝牙ble·血压计
华玥作者11 天前
Vue 3 + TypeScript + uni-app 组件库推荐:hy-app(华玥组件库)
vue.js·typescript·uni-app
FinelyYang11 天前
uniapp使用kkfileview在线预览ppt,excel,word,pdf类型文件
pdf·uni-app·powerpoint
2501_9160088911 天前
iPhone 设备信息查看,用 KeyMob 看型号、序列号、电池健康和 UDID
android·ios·小程序·https·uni-app·iphone·webview