直播网站源码,vue工具类,时间格式化
最近做uniapp经常用到时间格式化,需要转为刚刚、几分钟前等字符串格式,自己根据需求整理了一个工具类
效果说明:时间转字符串格式,时间戳转字符串(如刚刚、几分钟前、几小时前)
timeFrom(1670894134) ==> 5分钟前
dateformat("yyyy-MM-dd hh:mm:ss.S") ==> 2023-02-09 08:09:04.423
dateformat("yyyy-M-d h:m:s.S") ==> 2023-2-9 8:9:4.18
dateformat("E") ==> 四
dateformat("EE") ==> 周四
dateformat("EEE") ==> 星期四
timeFromTool.js
export function timeFrom(timestamp = null, format = null) {
if (!!format) {
return timestampformat(timestamp, format);
}
if (timestamp == null) timestamp = Number(new Date())
timestamp = parseInt(timestamp)
// 毫秒(13位),秒(10位)
if (timestamp.toString().length == 10) timestamp *= 1000
let timer = (new Date()).getTime() - timestamp
timer = parseInt(timer / 1000)
// 如果小于5分钟,则返回"刚刚",其他以此类推
let tips = ''
switch (true) {
case timer < 300:
tips = '刚刚'
break
case timer >= 300 && timer < 3600:
tips = `${parseInt(timer / 60)}分钟前`
break
case timer >= 3600 && timer < 86400:
tips = `${parseInt(timer / 3600)}小时前`
break
case timer >= 86400 && timer < 2592000:
tips = `${parseInt(timer / 86400)}天前`
break
case timer >= 2592000 && timer < 365 * 86400:
tips = `${parseInt(timer / (86400 * 30))}个月前`
break
default:
tips = timestampformat(timestamp, format);
}
return tips
}
//时间戳转时间字符串
export function timestampformat(timestamp = null, format = "yyyy-MM-dd hh:mm:ss") {
if (timestamp == null) timestamp = Number(new Date())
timestamp = parseInt(timestamp)
// 判断用户输入的时间戳是秒还是毫秒,一般前端js获取的时间戳是毫秒(13位),后端传过来的为秒(10位)
if (timestamp.toString().length == 10) timestamp *= 1000
let date = new Date(timestamp + '+0800');
return dateformat(format,date);
}
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 星期(E)可以用 1-3 个占位符,如
// dateformat("yyyy-MM-dd hh:mm:ss.S") ==> 2023-02-09 08:09:04.423
// dateformat("yyyy-M-d h:m:s.S") ==> 2023-2-9 8:9:4.18
// dateformat("E") ==> 四
// dateformat("EE") ==> 周四
// dateformat("EEE") ==> 星期四
export function dateformat( format = "yyyy-MM-dd hh:mm:ss",date = new Date()) {
var o = {
"M+": date.getMonth() + 1, //月
"d+": date.getDate(), //天
"H+": date.getHours(), //时(24小时制)
"h+": date.getHours() % 12 == 0 ? date.getHours() : date.getHours() % 12, //时(12小时制)
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒
}
var week = {
"0": "日",
"1": "一",
"2": "二",
"3": "三",
"4": "四",
"5": "五",
"6": "六"
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
}
if (/(E+)/.test(format)) {
format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周") : "") + week[
date.getDay() + ""]);
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
}
以上就是直播网站源码,vue工具类,时间格式化, 更多内容欢迎关注之后的文章
标签:vue,格式化,format,timestamp,dateformat,timer,源码,date,tips From: https://www.cnblogs.com/yunbaomengnan/p/17191816.html