JavaScript 封装格式化时间戳的函数

前言

日常项目开发中把一个时间戳(如何获取时间戳?)格式化为日常生活中正常常见的时间格式的业务是很常见的。这里封装了一个基础的格式化时间的函数供您参考。这个函数接收一个 10 位或者 13 位的时间戳(不传会默认当前时间),返回一个时间戳格式化后的数据对象内部包含 年、月、日、时、分、秒、date=年月日、time=时分秒、msgDate=聊天场景下可能会用到的时间格式。

注:此方法复制、粘贴即用,建议可以放到项目全局工具方法中(比如全局全局 hooks )不同页面更方便调用。

直接上代码:

代码

/**
 * 格式化时间函数,接收一个长度为 10 位 或者 13 位 的时间戳
 * @param {time} 时间戳 可以是 10 位或者 13 位,若不传则默认为当前时间
 * @return {Object} 返回一个时间戳格式化后的数据对象内部包含 年、月、日、时、分、秒、date=年月日、time=时分秒、msgDate=聊天场景下可能会用到的时间格式
 */
formatDate(time) {
	if(!time) time = new Date().getTime()
    // 如果时间戳是 10位 的就 * 1000 转换为 毫秒
	const _time = time.toString().length > 10 ? time : time * 1000
	// console.log( (new Date()).getDate() );		// 得到今天的 号 数
	// 这里传入的时间戳是 10 位的,表示为秒数,所以要乘以 1000 转换为毫秒
	const date = new Date(_time);
	const Y = date.getFullYear();
	const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
	const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());
	const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours());
	const m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes());
	const s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
	
	// 最终返回的时间数据对象
	const obj = {
	    Y,
		M,
		D,
		h,
		m,
		s,
		date: '',
		time: '',
		msgDate: ''
	}
	// 判断一下消息是今天的还是昨天的
	if ((new Date()).getDate() == parseInt(D)) {
		obj.msgDate = h + ':' + m // 如果是今天的消息则只显示时间,不显示日期
	} else if ((new Date()).getDate() - parseInt(D) >= 1 && (new Date()).getDate() - parseInt(D) < 2) {
		obj.msgDate = '昨天 ' + h + ':' + m
	} else if ((new Date()).getFullYear() - Y > 0) { // 如果不是同一年的消息则展示年份
		obj.msgDate = `${Y}年${M}月${D}日 ${h}:${m}` // X年X月X日 00:00 的格式
	} else {
		obj.msgDate = `${M}月${D}日 ${h}:${m}` // X月X日 00:00 的格式
	}
	obj.date = `${Y}年${M}月${D}日`
	obj.time = `${h}:${m}:${s}`
	
	return obj;
}

示例

返回示例截图:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值