js封装毫秒时间戳转换仿聊天时间显⽰格式js封装毫秒时间戳转换仿聊天时间显⽰格式
先把的时间显⽰规则拍上来
聊天消息时间显⽰说明
1、当天的消息,以每5分钟为⼀个跨度的显⽰时间;
2、消息超过1天、⼩于1周,显⽰星期+收发消息的时间;
3、消息⼤于1周,显⽰⼿机收发时间的⽇期。
个⼈补充说明:
1.如果时间的年份是今年以前的,则会展⽰:2020年04⽉21⽇ 下午 18:02
2.如果是今年的,则展⽰:03⽉21⽇ 下午 18:02
然后废话不多说,代码直接贴上。顺⼿附带了⼏个⼩⽅法
import{ formatTime2 }from'./util'
/
/ 星期格式转换 0-6:周⽇到周六
function weekFormat(e, prefix ="周"){
switch(e){
case0:
return prefix +"⽇"
break;
case1:
return prefix +"⼀"
break;
case2:
return prefix +"⼆"
break;
case3:
return prefix +"三"
break;
case4:
return prefix +"四"
break;
case5:
return prefix +"五"
break;
case6:
return prefix +"六"
break;
default:
return""
break;
}
}
// 转换今⽇的时⾠格式
function todayTimeFormat(e){
if(e >=0&& e <7){
return"凌晨"
}else if(e >=7&& e <11){
return"上午"
}else if(e >=11&& e <13){
return"中午"
}else if(e >=13&& e <18){
return"下午"
}else if(e >=18&& e <24){
return"晚上"
}else{
return""
}
}
// 是否显⽰周⼏
function isShowWeekDay(sub, weekDay){
const currentWeekDay =new Date().getDay()
const dayTime =1000*60*60*24
// 1.当前时间与消息时间相差必须⼤于2天⼩于7天
// 2.当前时间距离本周⼀相差必须⼤于2天且⼩于当前距离周⼀的天数
// 3.消息时间不可能是0-周⽇,因为周⽇没有给后⾯时间留空间,不会⾛这⾥的逻辑,⽽是⾛今天的逻辑
if(sub >= dayTime *2&& weekDay !==0&& sub <= dayTime * currentWeekDay){
return true
}else{
return false
}
}
// 仿时间显⽰格式转换 @time 时间戳毫秒
function weChatTimeFormat(time){
const today =new Date().getTime()
// 当前时间减去获取到的时间
代码转换const sub = today - time
const day =1000*60*60*24
const timeDate =new Date(time)
const currentYear =new Date().getFullYear()
const getYear =new Date(time).getFullYear()
const HHmm =`${formatTime2("hh", timeDate)}:${formatTime2("mm", timeDate)}`
const showWeekDay =isShowWeekDay(sub, Day())
if(currentYear > getYear){
return`${formatTime2("yyyy年MM⽉dd⽇", timeDate)}${Hours())}${formatTime2("hh:mm", timeDate)}` }else if(showWeekDay){
return`${Day())}${HHmm}`
}else if(sub > day && sub < day *2){
return`昨天${HHmm}`
}else if(sub <= day){
return HHmm
}else{
return`${formatTime2("MM⽉dd⽇", timeDate)}${Hours())}${formatTime2("hh:mm", timeDate)}`
}
}
weekFormat,
todayTimeFormat,
isShowWeekDay,
weChatTimeFormat
}
接下来这⾥是那个formatTime2,之前同事从⽹上直接拿来的,我就图省事直接拿来了
//时间格式化兼容 ios
function formatTime2(fmt, timestamp){
var date =new Date(timestamp)// 兼容safari
var o ={
'M+': Month()+1,
'd+': Date(),
'h+': Hours(),
'm+': Minutes(),
's+': Seconds(),
'q+': Math.floor((Month()+3)/3),
'S': Milliseconds()
}
if(/(y+)/.test(fmt)){
fmt = place(RegExp.$1,(FullYear()+'').substr(4- RegExp.$1.length))
}
for(var k in o){
if(new RegExp('('+ k +')').test(fmt)){
fmt = place(RegExp.$1,(RegExp.$1.length ===1)?(o[k]):(('00'+ o[k]).substr((''+ o[k]).length)))
}
}
return fmt
}
formatTime2: formatTime2
}
整体还是⽐较简单的⼀个⼩⽅法的,是我这次写⼩程序客服功能时顺⼿写的,为了以后⽅便也为了造福各位懒⼈,分享给⼤家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论