zhangchunxia
2025-01-22 4bbc711a52c76c83ef00a111046049dbbff0098d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
/*
 * @Author: daidai
 * @Date: 2021-12-16 14:40:18
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2022-04-19 14:44:14
 * @FilePath: \web-pc\src\lib\dd-moment.js
 */
 
 
const DDmoment = function (date) {
    let time;
    if (!date) {
        time = new Date()
    }else if(date){
        time=new Date(date);
    }
    return {
        time,
        format,
        subtract,
        getTime,
    }
}
/**
 * @content 前多少天
 * @param  days  天 ||  years 年  || months 月 ||  weeks 周 
 * @returns 
 */
function subtract(num, type) {
    let time = this.time
    time.setTime(time.getTime()-getNeedTime(num, type))
    time=new Date(time)
    return {
        time,
        format,
        getTime
    }
}
/**
 * @param  Yy年  ||  M 月  || Dd 日 ||  Hh 时 || m 分 || Ss 秒
 * @returns 
 */
function format(fmt) {
    let date = this.time
    let ret;
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "y+": date.getFullYear().toString(),        // 年
        "M+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "D+": date.getDate().toString(),            // 日
        "h+": date.getHours().toString(),           // 时
        "H+": date.getHours().toString(),           // 时
        "m+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString(),         // 秒
        "s+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}
//时间戳转时间
function getTime() {
    return new Date(this.time)
}
//获取需要的时间
function getNeedTime(num, type) {
    let time=0
    switch (type) {
        case "days":
            time= 3600 * 1000 * 24 * num;
            break;
        case "years":
            time=3600 * 1000 * 24 *365 *num;
            break;
        case "months":
            time = 3600 * 1000 * 24 *30* num;
            break;
        case "weeks":
            time= 3600 * 1000 * 24 *7* num;
            break;
        default:
            break;
    }
    return time;
}
export default DDmoment