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") ==> 星期四

扫描二维码关注公众号,回复: 14788558 查看本文章

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;
}

猜你喜欢

转载自blog.csdn.net/csdn_zuirenxiao/article/details/128946781
今日推荐