JS仿微信聊天对话日期 JS格式化时间

花不多说,直接上代码
写的不好,还请指正

time是需要格式化的时间 ios日期请将 - 替换为 /  chatsDate ture 是聊天页面历史记录列表的显示 默认false 是聊天列表的显示


function setTimeWeChat(time = null, chatsDate = false) {
	if (!time) return
    const weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
	const today_now = new Date();
	// 此刻的年月日时分秒
	const today_date = {
		year: today_now.getFullYear(),
		month: (today_now.getMonth() + 1).toString().padStart(2, '0'),
		day: today_now.getDate().toString().padStart(2, '0'),
		hours: today_now.getHours().toString().padStart(2, '0'),
		minutes: today_now.getMinutes().toString().padStart(2, '0'),
		seconds: today_now.getSeconds().toString().padStart(2, '0'),
		week: today_now.getDay(),
	}
	// 今天0点0分0秒的时间戳
	const today_start = new 
Date(`${today_date.year}/${today_date.month}/${today_date.day} 00:00:00`).getTime();
	// 今天23点59分59秒的时间戳
	const today_end = new Date(`${today_date.year}/${today_date.month}/${today_date.day} 23:59:59`).getTime();
	// 昨天0点0分0秒的时间戳
	const yesterday_start = today_start - 60 * 60 * 24 * 1000;
	// 七天前0点0分0秒的时间戳
	const week_start = today_start - 60 * 60 * 24 * 7 * 1000;
	// 需要格式化的日期时间 iOS用replace(/-/g, '/')处理一下
	const target_time = new Date(time);
	// 需要格式化的日期时间的时间戳
	const target_millisecond = target_time.getTime();
	// 需要格式化的日期时间的年月日时分秒
	const target_date = {
		year: target_time.getFullYear(),
		month: (target_time.getMonth() + 1).toString().padStart(2, '0'),
		day: target_time.getDate().toString().padStart(2, '0'),
		hours: target_time.getHours().toString().padStart(2, '0'),
		minutes: target_time.getMinutes().toString().padStart(2, '0'),
		seconds: target_time.getSeconds().toString().padStart(2, '0'),
		week: target_time.getDay(),
	}
	// 如果目标时间小于今天的开始时间
	let handleTime = '';
	if (target_millisecond < week_start) { // 七天前
		if (chatsDate) {
			handleTime = target_date.year === today_date.year ? `${target_date.month}-${target_date.day}` :
				`${target_date.year}-${target_date.month}-${target_date.day}`
		} else {
			handleTime = target_date.year === today_date.year ?
				`${target_date.month}-${target_date.day} ${target_date.hours}:${target_date.minutes}` :
				`${target_date.year}-${target_date.month}-${target_date.day} ${target_date.hours}:${target_date.minutes}`
		}

	} else if (target_millisecond >= week_start && target_millisecond < yesterday_start) { // 除去昨天的六天
		// const weekList = i18n.t('calendar.weekList').split(',');
		handleTime = `${weekList[target_date.week]} ${target_date.hours}:${target_date.minutes}`
	} else if (target_millisecond >= yesterday_start && target_millisecond < today_start) { // 昨天
		handleTime = `昨天 ${target_date.hours}:${target_date.minutes}`
	} else if (target_millisecond >= today_start && target_millisecond <= today_end) { // 今天
		handleTime = `${target_date.hours}:${target_date.minutes}`
	} else { // 今天以后---昨天以前
		if (chatsDate) {
			handleTime = target_date.year === today_date.year ? `${target_date.month}-${target_date.day}` :
				`${target_date.year}-${target_date.month}-${target_date.day}`
		} else {
			handleTime = target_date.year === today_date.year ?
				`${target_date.month}-${target_date.day} ${target_date.hours}:${target_date.minutes}` :
				`${target_date.year}-${target_date.month}-${target_date.day} ${target_date.hours}:${target_date.minutes}`
		}

	}

	return handleTime
}

 这是列表的时间显示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值