yuanhao
2025-06-04 35dab133f3085a6bce2f045d2d28605aa64e8e61
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
var now = new Date(); // 当前日期
var nowDayOfWeek = now.getDay(); // 今天本周的第几天
var nowDay = now.getDate(); // 当前日
var nowMonth = now.getMonth(); // 当前月
var nowYear = now.getYear(); // 当前年
nowYear += (nowYear < 2000) ? 1900 : 0;
 
module.exports = {
    /**
     * 获得近几天的日期
     * 
     * @returns
     */
    getDayList(day, fmt) {
        //设置日期,当前日期的前七天
        var myDate = new Date(); //获取今天日期
        myDate.setDate(myDate.getDate() - day + 1);
        var dateArray = [];
        var dateTemp;
        var flag = 1;
        for (var i = 0; i < day; i++) {
            dateTemp = this.formatDate(myDate, fmt);
            dateArray.push(dateTemp);
            myDate.setDate(myDate.getDate() + flag);
        }
        return dateArray;
    },
 
    /**
     * 获得当前日期
     * 
     * @returns
     */
    getNowDay(fmt) {
        return this.formatDate(new Date(), fmt);
    },
    /**
     * 获得本周的开始时间
     * 
     * @returns
     */
    getStartDayOfWeek(fmt) {
        var day = nowDayOfWeek || 7;
        return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 1 - day), fmt);
    },
    /**
     * 获得本周的结束时间
     * 
     * @returns
     */
    getEndDayOfWeek(fmt) {
        var day = nowDayOfWeek || 7;
        return this.formatDate(new Date(now.getFullYear(), nowMonth, nowDay + 7 - day), fmt);
    },
    /**
     * 获得本月的开始时间
     * 
     * @returns
     */
    getStartDayOfMonth(fmt) {
        var monthStartDate = new Date(nowYear, nowMonth, 1);
        return this.formatDate(monthStartDate, fmt);
    },
    /**
     * 获得本月的结束时间
     * 
     * @returns
     */
    getEndDayOfMonth(fmt) {
        var monthEndDate = new Date(nowYear, nowMonth, this.getMonthDays());
        return this.formatDate(monthEndDate, fmt);
    },
    /**
     * 获得本月天数
     * 
     * @returns
     */
    getMonthDays() {
        var monthStartDate = new Date(nowYear, nowMonth, 1);
        var monthEndDate = new Date(nowYear, nowMonth + 1, 1);
        var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
        return days;
    },
 
    formatTime(time, option) {
        const d = new Date(time.replace(/-/g, '/'))
        const now = Date.now()
 
        const diff = (now - d) / 1000
 
        if (diff < 30) {
            return '刚刚'
        } else if (diff < 3600) {
            // less 1 hour
            return Math.ceil(diff / 60) + '分钟前'
        } else if (diff < 3600 * 24) {
            return Math.ceil(diff / 3600) + '小时前'
        } else if (diff < 3600 * 24 * 2) {
            return '1天前'
        }
        if (option) {
            return this.formatDate(time, option)
        } else {
            return (
                d.getMonth() +
                1 +
                '月' +
                d.getDate() +
                '日' +
                d.getHours() +
                '时' +
                d.getMinutes() +
                '分'
            )
        }
    },
    /**
     * @param 日期格式化
     * @returns {String}
     */
    formatDate(date, fmt) {
        if (!date) {
            return
        }
        if (!fmt) {
            fmt = 'yyyy-MM-dd'
        }
        if (!(date instanceof Date)) {
            date = new Date(date.replace(/-/g, '/'))
        }
 
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
        }
 
        let o = {
            'M+': date.getMonth() + 1,
            'd+': date.getDate(),
            'h+': date.getHours(),
            'm+': date.getMinutes(),
            's+': date.getSeconds()
        };
 
        for (let k in o) {
            if (new RegExp(`(${k})`).test(fmt)) {
                let str = o[k] + '';
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : ('00' + str).substr(str.length));
            }
        }
        return fmt;
    }
};