直播網站原始碼,vue工具類,時間格式化

zhibo系統開發發表於2023-03-08

直播網站原始碼,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工具類,時間格式化, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2938651/,如需轉載,請註明出處,否則將追究法律責任。

相關文章