JavaScript将时间转换为刚刚、几分钟前、几小时前、几天前

// 用毫秒表示分钟、小时、天、周、月
let minute = 1000 * 60;
let hour = minute * 60;
let day = hour * 24;
let week = day * 7;
let month = day * 30;


// 传入时间格式或时间戳,这里传入的时间格式: 2022-08-05T08:17:14.000+00:00
function convertTimeToHumanReadable(dateTime) {

	// 获取当前时间并转换为时间戳,方便计算
	let timestamp_current = new Date().getTime();

	// 将传入的时间格式字符串解析为Date对象
	let _date = new Date(dateTime);

	// 将Date对象转换为时间戳,方便计算
	let timestamp_input = _date.getTime();

	// 计算当前时间与传入的时间之间相差的时间戳
	let timestamp_diff = timestamp_current - timestamp_input;

	// 计算时间差共有多少个分钟
	let minC = timestamp_diff / minute;
	// 计算时间差共有多少个小时
	let hourC = timestamp_diff / hour;
	// 计算时间差共有多少个天
	let dayC = timestamp_diff / day;
	// 计算时间差共有多少个周
	let weekC = timestamp_diff / week;
	// 计算时间差共有多少个月
	let monthC = timestamp_diff / month;

	if (monthC >= 1 && monthC < 4) {
		return parseInt(monthC) + "月前";
	} else if (weekC >= 1 && weekC < 4) {
		return parseInt(weekC) + "周前";
	} else if (dayC >= 1 && dayC < 7) {
		return parseInt(dayC) + "天前";
	} else if (hourC >= 1 && hourC < 24) {
		return parseInt(hourC) + "小时前";
	} else if (minC >= 1 && minC < 60) {
		return parseInt(minC) + "分钟前";
	} else if ((timestamp_diff >= 0) && (timestamp_diff <= minute)) {
		// 时间差大于0并且小于1分钟
		return "刚刚";
	} else {
		return _date.getFullYear() + "年" + _date.getMonth() + "月" + _date.getDate() + "日";
	}
}

posted @ 2022-08-05 18:34  Eric鞠  阅读(1222)  评论(0编辑  收藏  举报