js时间戳转时间,哈哈哈哈哈哈哈哈哈哈哈

本文介绍了一个名为timeNumToDateJson的实用工具,它能够将时间戳转换为多种格式的日期和时间字符串,包括中文日期和数字日期。该工具支持格式化输出,可以自定义日期间隔符号,并能轻松追加时分秒信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/** timeNumToDateJson
 * 
 *  @param :
 *          data @param Object timeStamp 时间戳(不传默认当前时间戳)
 *          data @param String timeStamp 时间戳(不传默认当前时间戳)
 *          data @param Number timeStamp 时间戳(不传默认当前时间戳)
 *
 *  @return defaultKey:(zh带中文)
 *          Y: 年
 *          M: 月
 *          D: 日
 *          h: 时
 *          m: 分
 *          s: 秒
 *          W: 星期
 * 
 *  @return fnKey:
 *          YMD() @param data:
 *                          format 是否格式化 0->'00'
 *                          lang 仅支持中文日期(zh)和数字日期(默认)
 *                          mark 数字日期间隔,仅在数字日期存在("-")
 *                @param hmsData:
 *                          @param 提供以" "追加时分秒,参数对应 return hms()
 *          hms() data @param:
 *                          format 是否格式化 0->'00'
 *                          mark 时间间隔(默认"-")
 *          format() n @param: 仅数字
 *                     @return 0->'00'
 * 
 *          eg : setInterval(() => {
 *                  console.log(timeNumToDateJson().YMD({lang:"zh"}, true))
 *               }, 1000);
 */

// Class
class FormatTime {
    constructor(data) {
        let dataIsObj = typeof data === "object"
        let time = dataIsObj ? data.timeStamp ? new Date(data.timeStamp) : new Date() : data ? new Date(data) : new Date();
        this.Y = time.getFullYear();
        this.M = time.getMonth() + 1;
        this.D = time.getDate();
        this.W = time.getDay();
        this.h = time.getHours();
        this.m = time.getMinutes();
        this.s = time.getSeconds();
        this.Y_zh = `${time.getFullYear()}年`;
        this.M_zh = `${time.getMonth() + 1}月`;
        this.D_zh = `${time.getDate()}日`;
        this.W_zh = `星期${"日一二三四五六".charAt(time.getDay())}`;
    }

    YMD(data, hmsData) {
        let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format);
        let isZh = data && data.lang && data.lang.toLocaleLowerCase() === "zh";
        let spaceSymbol = !isZh && data && data.mark ? data.mark : "-";
        let formatStr = [this.Y, this.M, this.D].map(FormatTime.format).join(spaceSymbol);
        formatStr = isZh ? `${FormatTime.format(this.Y)}年${FormatTime.format(this.M)}月${FormatTime.format(this.D)}日` : formatStr;
        let defaultStr = isZh ? `${this.Y}年${this.M}月${this.D}日` : [this.Y, this.M, this.D].join(spaceSymbol);
        let returnStr = isFormat ? formatStr : defaultStr;
        return hmsData !== undefined ? `${returnStr} ${this.hms(hmsData)}` : returnStr;
    }

    hms(data) {
        let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format)
        let spaceSymbol = data && data.mark ? data.mark : ":";
        let formatStr = [this.h, this.m, this.s].map(FormatTime.format).join(spaceSymbol);
        return isFormat ? formatStr : [this.h, this.m, this.s].join(spaceSymbol);
    }

    static format(n){
        return n < 10 ? `0${n}` : n;
    }
}
console.log(new FormatTime().YMD(true,false))

// Function
const formatTime= (data) => {
    let dataIsObj = typeof data === "object"
    let time = dataIsObj ? data.timeStamp ? new Date(data.timeStamp) : new Date() : data ? new Date(data) : new Date();
    return {
        Y: time.getFullYear(),
        M: time.getMonth() + 1,
        D: time.getDate(),
        W: time.getDay(),
        h: time.getHours(),
        m: time.getMinutes(),
        s: time.getSeconds(),
        Y_zh: `${time.getFullYear()}年`,
        M_zh: `${time.getMonth() + 1}月`,
        D_zh: `${time.getDate()}日`,
        W_zh: `星期${"日一二三四五六".charAt(time.getDay())}`,
        YMD: function(data, hmsData = undefined) {
            let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format);
            let isZh = data && data.lang && data.lang.toLocaleLowerCase() === "zh";
            let spaceSymbol = !isZh && data && data.mark ? data.mark : "-";
            let formatStr = [this.Y, this.M, this.D].map(this.format).join(spaceSymbol);
            formatStr = isZh ? `${this.format(this.Y)}年${this.format(this.M)}月${this.format(this.D)}日` : formatStr;
            let defaultStr = isZh ? `${this.Y}年${this.M}月${this.D}日` : [this.Y, this.M, this.D].join(spaceSymbol);
            let returnStr = isFormat ? formatStr : defaultStr;
            return hmsData !== undefined ? `${returnStr} ${this.hms(hmsData)}` : returnStr;
        },
        hms: function(data) {
            let isFormat = ((typeof data).toLocaleLowerCase() === "boolean" && data) || (data && data.format)
            let spaceSymbol = data && data.mark ? data.mark : ":";
            let formatStr = [this.h, this.m, this.s].map(this.format).join(spaceSymbol);
            return isFormat ? formatStr : [this.h, this.m, this.s].join(spaceSymbol);
        },
        format: function(n) {
            return n < 10 ? `0${n}` : n;
        }
    };
}

console.log(formatTime().YMD(true,false))

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值