js时间戳操作 转日期格式、距离当前时长、时间间隔、日期转时间戳

本文介绍了一种在前端开发中高效处理时间戳的方法,通过封装的函数可以将时间戳转换为易于阅读的格式,如“刚刚”、“3分钟前”等,并提供了源代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端在日常工作中经常会遇到各种时间戳相关的处理。在此提供以下个人封装的方法,希望能够帮助大家节省时间

引入:

import SOtime from '@/utils/SOtime.js'

 使用:

console.log(SOtime.time1("<时间戳>")) // 刚刚 || 3分钟前 || 1小时前 || 1天前 || 1周前 || 2月前 || 2019年11月11日
console.log(SOtime.time2("<时间戳>")) // 上午12:01 || 昨天 || 星期日 || 2019-11-11
console.log(SOtime.time3("<时间戳>")) // 2019-11-11 12:01
console.log(SOtime.time4("<日期格式>")) // 1593790157203

附源码: 

// time1  1593790157203  TO>>>  刚刚 || 3分钟前 || 1小时前 || 1天前 || 1周前 || 2月前 || 2019年11月11日
// time2  1593790157203  TO>>>  上午12:01 || 昨天 || 星期日 || 2019-11-11
// time3  1593790157203  TO>>>  2019-11-11 12:01
// time4  2019/11/11 || 2019/11/11 12:03 TO>>> 1593790157203

const time1 = (timer) => {
	var arrTimestamp = (timer + '').split('');
	for (var start = 0; start < 13; start++) {
		if (!arrTimestamp[start]) {
			arrTimestamp[start] = '0';
		}
	}
	timer = arrTimestamp.join('') * 1;

	var minute = 1000 * 60;
	var hour = minute * 60;
	var day = hour * 24;
	var halfamonth = day * 15;
	var month = day * 30;
	var now = new Date().getTime();
	var diffValue = now - timer;

	// 如果本地时间反而小于变量时间
	if (diffValue < 0) {
		return '不久前';
	}

	// 计算差异时间的量级
	var monthC = diffValue / month;
	var weekC = diffValue / (7 * day);
	var dayC = diffValue / day;
	var hourC = diffValue / hour;
	var minC = diffValue / minute;

	// 数值补0方法
	var zero = function(value) {
		if (value < 10) {
			return '0' + value;
		}
		return value;
	};

	// 使用
	if (monthC > 12) {
		// 超过1年,直接显示年月日
		return (function() {
			var date = new Date(timer);
			return date.getFullYear() + '年' + zero(date.getMonth() + 1) + '月' + zero(date.getDate()) + '日';
		})();
	} else if (monthC >= 1) {
		return parseInt(monthC) + "月前";
	} else if (weekC >= 1) {
		return parseInt(weekC) + "周前";
	} else if (dayC >= 1) {
		return parseInt(dayC) + "天前";
	} else if (hourC >= 1) {
		return parseInt(hourC) + "小时前";
	} else if (minC >= 1) {
		return parseInt(minC) + "分钟前";
	}
	return '刚刚';
}
const time2 = (timer) => {
	var arrTimestamp = (timer + '').split('');
	for (var start = 0; start < 13; start++) {
		if (!arrTimestamp[start]) {
			arrTimestamp[start] = '0';
		}
	}
	var Etime = arrTimestamp.join('') * 1; //参数时间
	var Etimer = new Date(Etime)

	var Ntime = new Date().getTime() //现在时间
	var Ntimer = new Date()

	var Eyear = Etimer.getFullYear(); //取得4位数的年份
	var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1; //取得日期中的月份,其中0表示1月,11表示12月
	var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate(); //返回日期月份中的天数(1到31)
	var Eweek = Etimer.getDay() //返回日期月份中的周
	var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours(); //返回日期中的小时数(0到23)
	var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes(); //返回日期中的分钟数(0到59)

	var today = new Date(new Date().setHours(0, 0, 0, 0)) / 1000 * 1000 //今天0点时间戳
	var yesterday = today - 24 * 60 * 60 * 1000 //昨天0点时间戳
	var beforeWeek = today - 7 * 24 * 60 * 60 * 1000 //一周前0点时间戳

	// 今天的时间
	if (today < Etime) {

		if (Ehour < 12) {
			return '上午' + Ehour + ':' + Eminute
		} else {
			return '下午' + Ehour + ':' + Eminute
		}
	}
	// 昨天的时间
	if (yesterday < Etime < today) {
		return '昨天'
	}
	// 一周内的时间
	if (beforeWeek < Etime) {
		if (Eweek == 0) {
			return "星期日"
		} else if (Eweek == 1) {
			return "星期一"
		} else if (Eweek == 2) {
			return "星期二"
		} else if (Eweek == 3) {
			return "星期三"
		} else if (Eweek == 4) {
			return "星期四"
		} else if (Eweek == 5) {
			return "星期五"
		} else if (Eweek == 6) {
			return "星期六"
		}
	}
	// 更早的时间
	return Eyear + '-' + Emonth + '-' + Edate
}
const time3 = (timer) => {
	var arrTimestamp = (timer + '').split('');
	for (var start = 0; start < 13; start++) {
		if (!arrTimestamp[start]) {
			arrTimestamp[start] = '0';
		}
	}
	var Etime = arrTimestamp.join('') * 1; //参数时间
	var Etimer = new Date(Etime)

	var Eyear = Etimer.getFullYear(); //取得4位数的年份
	var Emonth = Etimer.getMonth() + 1 < 10 ? '0' + (Etimer.getMonth() + 1) : Etimer.getMonth() + 1; //取得日期中的月份,其中0表示1月,11表示12月
	var Edate = Etimer.getDate()< 10 ? '0' + Etimer.getDate() : Etimer.getDate(); //返回日期月份中的天数(1到31)
	var Ehour = Etimer.getHours() < 10 ? '0' + Etimer.getHours() : Etimer.getHours(); //返回日期中的小时数(0到23)
	var Eminute = Etimer.getMinutes() < 10 ? '0' + Etimer.getMinutes() : Etimer.getMinutes(); //返回日期中的分钟数(0到59)

	return Eyear + "-" + Emonth + "-" + Edate + " " + Ehour + ":" + Eminute
}
const time4 = (timer) => {
	var date = timer.replace(/\//g, '-')
	date = timer.replace(/:/g, ':')
	var Etimer = new Date(date)
	var Etime = Etimer.getTime()

	return Etime
}
module.exports = {
	time1,
	time2,
	time3,
	time4
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值