miniprogram-doctor/utils/wechatTime.js
haomingming 97a504c6d2 优化
2023-05-05 11:44:37 +08:00

122 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 星期格式转换 0-6周日到周六
function weekFormat(e, prefix = "周") {
switch (e) {
case 0:
return prefix + "日"
break;
case 1:
return prefix + "一"
break;
case 2:
return prefix + "二"
break;
case 3:
return prefix + "三"
break;
case 4:
return prefix + "四"
break;
case 5:
return prefix + "五"
break;
case 6:
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, timeDate.getDay())
const currentDay = new Date().getDate()
const getDay = new Date(time).getDate()
const subDay = currentDay - getDay
if (currentYear > getYear) {
return `${formatTime2("yyyy-MM-dd", timeDate)} ${formatTime2("hh:mm", timeDate)}`
// 上午下午
return `${formatTime2("yyyy年MM月dd日", timeDate)} ${todayTimeFormat(timeDate.getHours())} ${formatTime2("hh:mm", timeDate)}`
} else if (showWeekDay) {
return `${weekFormat(timeDate.getDay())} ${HHmm}`
//} else if (sub > day && sub < day * 2) {
} else if (subDay === 1) {
return `昨天 ${HHmm}`
} else if (sub <= day) {
return HHmm
} else {
return `${formatTime2("MM-dd", timeDate)} ${formatTime2("hh:mm", timeDate)}`
// 上午下午
return `${formatTime2("MM月dd日", timeDate)} ${todayTimeFormat(timeDate.getHours())} ${formatTime2("hh:mm", timeDate)}`
}
}
function formatTime2(fmt, timestamp) {
var date = new Date(timestamp) // 兼容safari
var o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
'S': date.getMilliseconds()
}
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
}
}
return fmt
}
module.exports = {
weekFormat,
todayTimeFormat,
isShowWeekDay,
wechatTimeFormat
}