Skip to content
dayjs的基本使用

官方中文网站

dayjs.min.js

js
!function(t, e) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e()
}(this, (function() {
    "use strict";
    var t = 1e3
      , e = 6e4
      , n = 36e5
      , r = "millisecond"
      , i = "second"
      , s = "minute"
      , u = "hour"
      , a = "day"
      , o = "week"
      , c = "month"
      , f = "quarter"
      , h = "year"
      , d = "date"
      , l = "Invalid Date"
      , $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/
      , y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g
      , M = {
        name: "en",
        weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
        months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
        ordinal: function(t) {
            var e = ["th", "st", "nd", "rd"]
              , n = t % 100;
            return "[" + t + (e[(n - 20) % 10] || e[n] || e[0]) + "]"
        }
    }
      , m = function(t, e, n) {
        var r = String(t);
        return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t
    }
      , v = {
        s: m,
        z: function(t) {
            var e = -t.utcOffset()
              , n = Math.abs(e)
              , r = Math.floor(n / 60)
              , i = n % 60;
            return (e <= 0 ? "+" : "-") + m(r, 2, "0") + ":" + m(i, 2, "0")
        },
        m: function t(e, n) {
            if (e.date() < n.date())
                return -t(n, e);
            var r = 12 * (n.year() - e.year()) + (n.month() - e.month())
              , i = e.clone().add(r, c)
              , s = n - i < 0
              , u = e.clone().add(r + (s ? -1 : 1), c);
            return +(-(r + (n - i) / (s ? i - u : u - i)) || 0)
        },
        a: function(t) {
            return t < 0 ? Math.ceil(t) || 0 : Math.floor(t)
        },
        p: function(t) {
            return {
                M: c,
                y: h,
                w: o,
                d: a,
                D: d,
                h: u,
                m: s,
                s: i,
                ms: r,
                Q: f
            }[t] || String(t || "").toLowerCase().replace(/s$/, "")
        },
        u: function(t) {
            return void 0 === t
        }
    }
      , g = "en"
      , D = {};
    D[g] = M;
    var p = "$isDayjsObject"
      , S = function(t) {
        return t instanceof _ || !(!t || !t[p])
    }
      , w = function t(e, n, r) {
        var i;
        if (!e)
            return g;
        if ("string" == typeof e) {
            var s = e.toLowerCase();
            D[s] && (i = s),
            n && (D[s] = n,
            i = s);
            var u = e.split("-");
            if (!i && u.length > 1)
                return t(u[0])
        } else {
            var a = e.name;
            D[a] = e,
            i = a
        }
        return !r && i && (g = i),
        i || !r && g
    }
      , O = function(t, e) {
        if (S(t))
            return t.clone();
        var n = "object" == typeof e ? e : {};
        return n.date = t,
        n.args = arguments,
        new _(n)
    }
      , b = v;
    b.l = w,
    b.i = S,
    b.w = function(t, e) {
        return O(t, {
            locale: e.$L,
            utc: e.$u,
            x: e.$x,
            $offset: e.$offset
        })
    }
    ;
    var _ = function() {
        function M(t) {
            this.$L = w(t.locale, null, !0),
            this.parse(t),
            this.$x = this.$x || t.x || {},
            this[p] = !0
        }
        var m = M.prototype;
        return m.parse = function(t) {
            this.$d = function(t) {
                var e = t.date
                  , n = t.utc;
                if (null === e)
                    return new Date(NaN);
                if (b.u(e))
                    return new Date;
                if (e instanceof Date)
                    return new Date(e);
                if ("string" == typeof e && !/Z$/i.test(e)) {
                    var r = e.match($);
                    if (r) {
                        var i = r[2] - 1 || 0
                          , s = (r[7] || "0").substring(0, 3);
                        return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1],i,r[3] || 1,r[4] || 0,r[5] || 0,r[6] || 0,s)
                    }
                }
                return new Date(e)
            }(t),
            this.init()
        }
        ,
        m.init = function() {
            var t = this.$d;
            this.$y = t.getFullYear(),
            this.$M = t.getMonth(),
            this.$D = t.getDate(),
            this.$W = t.getDay(),
            this.$H = t.getHours(),
            this.$m = t.getMinutes(),
            this.$s = t.getSeconds(),
            this.$ms = t.getMilliseconds()
        }
        ,
        m.$utils = function() {
            return b
        }
        ,
        m.isValid = function() {
            return !(this.$d.toString() === l)
        }
        ,
        m.isSame = function(t, e) {
            var n = O(t);
            return this.startOf(e) <= n && n <= this.endOf(e)
        }
        ,
        m.isAfter = function(t, e) {
            return O(t) < this.startOf(e)
        }
        ,
        m.isBefore = function(t, e) {
            return this.endOf(e) < O(t)
        }
        ,
        m.$g = function(t, e, n) {
            return b.u(t) ? this[e] : this.set(n, t)
        }
        ,
        m.unix = function() {
            return Math.floor(this.valueOf() / 1e3)
        }
        ,
        m.valueOf = function() {
            return this.$d.getTime()
        }
        ,
        m.startOf = function(t, e) {
            var n = this
              , r = !!b.u(e) || e
              , f = b.p(t)
              , l = function(t, e) {
                var i = b.w(n.$u ? Date.UTC(n.$y, e, t) : new Date(n.$y,e,t), n);
                return r ? i : i.endOf(a)
            }
              , $ = function(t, e) {
                return b.w(n.toDate()[t].apply(n.toDate("s"), (r ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), n)
            }
              , y = this.$W
              , M = this.$M
              , m = this.$D
              , v = "set" + (this.$u ? "UTC" : "");
            switch (f) {
            case h:
                return r ? l(1, 0) : l(31, 11);
            case c:
                return r ? l(1, M) : l(0, M + 1);
            case o:
                var g = this.$locale().weekStart || 0
                  , D = (y < g ? y + 7 : y) - g;
                return l(r ? m - D : m + (6 - D), M);
            case a:
            case d:
                return $(v + "Hours", 0);
            case u:
                return $(v + "Minutes", 1);
            case s:
                return $(v + "Seconds", 2);
            case i:
                return $(v + "Milliseconds", 3);
            default:
                return this.clone()
            }
        }
        ,
        m.endOf = function(t) {
            return this.startOf(t, !1)
        }
        ,
        m.$set = function(t, e) {
            var n, o = b.p(t), f = "set" + (this.$u ? "UTC" : ""), l = (n = {},
            n[a] = f + "Date",
            n[d] = f + "Date",
            n[c] = f + "Month",
            n[h] = f + "FullYear",
            n[u] = f + "Hours",
            n[s] = f + "Minutes",
            n[i] = f + "Seconds",
            n[r] = f + "Milliseconds",
            n)[o], $ = o === a ? this.$D + (e - this.$W) : e;
            if (o === c || o === h) {
                var y = this.clone().set(d, 1);
                y.$d[l]($),
                y.init(),
                this.$d = y.set(d, Math.min(this.$D, y.daysInMonth())).$d
            } else
                l && this.$d[l]($);
            return this.init(),
            this
        }
        ,
        m.set = function(t, e) {
            return this.clone().$set(t, e)
        }
        ,
        m.get = function(t) {
            return this[b.p(t)]()
        }
        ,
        m.add = function(r, f) {
            var d, l = this;
            r = Number(r);
            var $ = b.p(f)
              , y = function(t) {
                var e = O(l);
                return b.w(e.date(e.date() + Math.round(t * r)), l)
            };
            if ($ === c)
                return this.set(c, this.$M + r);
            if ($ === h)
                return this.set(h, this.$y + r);
            if ($ === a)
                return y(1);
            if ($ === o)
                return y(7);
            var M = (d = {},
            d[s] = e,
            d[u] = n,
            d[i] = t,
            d)[$] || 1
              , m = this.$d.getTime() + r * M;
            return b.w(m, this)
        }
        ,
        m.subtract = function(t, e) {
            return this.add(-1 * t, e)
        }
        ,
        m.format = function(t) {
            var e = this
              , n = this.$locale();
            if (!this.isValid())
                return n.invalidDate || l;
            var r = t || "YYYY-MM-DDTHH:mm:ssZ"
              , i = b.z(this)
              , s = this.$H
              , u = this.$m
              , a = this.$M
              , o = n.weekdays
              , c = n.months
              , f = n.meridiem
              , h = function(t, n, i, s) {
                return t && (t[n] || t(e, r)) || i[n].slice(0, s)
            }
              , d = function(t) {
                return b.s(s % 12 || 12, t, "0")
            }
              , $ = f || function(t, e, n) {
                var r = t < 12 ? "AM" : "PM";
                return n ? r.toLowerCase() : r
            }
            ;
            return r.replace(y, (function(t, r) {
                return r || function(t) {
                    switch (t) {
                    case "YY":
                        return String(e.$y).slice(-2);
                    case "YYYY":
                        return b.s(e.$y, 4, "0");
                    case "M":
                        return a + 1;
                    case "MM":
                        return b.s(a + 1, 2, "0");
                    case "MMM":
                        return h(n.monthsShort, a, c, 3);
                    case "MMMM":
                        return h(c, a);
                    case "D":
                        return e.$D;
                    case "DD":
                        return b.s(e.$D, 2, "0");
                    case "d":
                        return String(e.$W);
                    case "dd":
                        return h(n.weekdaysMin, e.$W, o, 2);
                    case "ddd":
                        return h(n.weekdaysShort, e.$W, o, 3);
                    case "dddd":
                        return o[e.$W];
                    case "H":
                        return String(s);
                    case "HH":
                        return b.s(s, 2, "0");
                    case "h":
                        return d(1);
                    case "hh":
                        return d(2);
                    case "a":
                        return $(s, u, !0);
                    case "A":
                        return $(s, u, !1);
                    case "m":
                        return String(u);
                    case "mm":
                        return b.s(u, 2, "0");
                    case "s":
                        return String(e.$s);
                    case "ss":
                        return b.s(e.$s, 2, "0");
                    case "SSS":
                        return b.s(e.$ms, 3, "0");
                    case "Z":
                        return i
                    }
                    return null
                }(t) || i.replace(":", "")
            }
            ))
        }
        ,
        m.utcOffset = function() {
            return 15 * -Math.round(this.$d.getTimezoneOffset() / 15)
        }
        ,
        m.diff = function(r, d, l) {
            var $, y = this, M = b.p(d), m = O(r), v = (m.utcOffset() - this.utcOffset()) * e, g = this - m, D = function() {
                return b.m(y, m)
            };
            switch (M) {
            case h:
                $ = D() / 12;
                break;
            case c:
                $ = D();
                break;
            case f:
                $ = D() / 3;
                break;
            case o:
                $ = (g - v) / 6048e5;
                break;
            case a:
                $ = (g - v) / 864e5;
                break;
            case u:
                $ = g / n;
                break;
            case s:
                $ = g / e;
                break;
            case i:
                $ = g / t;
                break;
            default:
                $ = g
            }
            return l ? $ : b.a($)
        }
        ,
        m.daysInMonth = function() {
            return this.endOf(c).$D
        }
        ,
        m.$locale = function() {
            return D[this.$L]
        }
        ,
        m.locale = function(t, e) {
            if (!t)
                return this.$L;
            var n = this.clone()
              , r = w(t, e, !0);
            return r && (n.$L = r),
            n
        }
        ,
        m.clone = function() {
            return b.w(this.$d, this)
        }
        ,
        m.toDate = function() {
            return new Date(this.valueOf())
        }
        ,
        m.toJSON = function() {
            return this.isValid() ? this.toISOString() : null
        }
        ,
        m.toISOString = function() {
            return this.$d.toISOString()
        }
        ,
        m.toString = function() {
            return this.$d.toUTCString()
        }
        ,
        M
    }()
      , k = _.prototype;
    return O.prototype = k,
    [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", c], ["$y", h], ["$D", d]].forEach((function(t) {
        k[t[1]] = function(e) {
            return this.$g(e, t[0], t[1])
        }
    }
    )),
    O.extend = function(t, e) {
        return t.$i || (t(e, _, O),
        t.$i = !0),
        O
    }
    ,
    O.locale = w,
    O.isDayjs = S,
    O.unix = function(t) {
        return O(1e3 * t)
    }
    ,
    O.en = D[g],
    O.Ls = D,
    O.p = {},
    O
}
));

index.html

html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.13/dayjs.min.js"></script> -->
    <script src="./dayjs.min.js"></script>
    <title>Dayjs的基本使用</title>
</head>

<body>
    <script>
        // 获取当前时间
        console.log(dayjs().format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 10:18:38
        // 根据字符串创建时间对象
        console.log(dayjs("2018-08-08").format("YYYY-MM-DD HH:mm:ss")); // 2018-08-08 00:00:00
        // 根据数组创建时间对象
        console.log(dayjs([2018, 8, 8]).format("YYYY-MM-DD HH:mm:ss"));
        // 根据时间戳创建时间对象
        console.log(dayjs(1318781876406).format("YYYY-MM-DD HH:mm:ss")); // 2011-10-17 00:17:56
        // 根据Date 对象创建时间对象
        console.log(dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 10:23:46
        // 获取年份
        console.log(dayjs().year()); // 2024
        // 获取月份
        console.log(dayjs().month() + 1); // 12 , 月份是从0开始的
        // 获取日期
        console.log(dayjs().date()); // 12 // 获取当前日期,例如12月12日,这里获取的就是日12
        // 获取星期几
        console.log(dayjs().day()); // 4
        // 设置星期几
        console.log(dayjs().day(7).format("YYYY-MM-DD")); // 获取本周周几的具体日期,参数传入周几,返回的是当前周几的日期
        // 获取小时
        console.log(dayjs().hour()); // 10
        // 获取分钟
        console.log(dayjs().minute()); // 23
        // 获取秒
        console.log(dayjs().second()); // 46
        // 获取毫秒
        console.log(dayjs().millisecond()); // 608
        // 获取时间戳
        console.log(dayjs().valueOf()); // 1733970616860
        // 获取当前时间与1970年1月1日0时0分0秒之间的毫秒数
        console.log(dayjs().unix());

        // 设置年份(例如当前是2024-12-12,设置年份为2018,则返回2018-12-12)
        console.log(dayjs().set("year", 2018).format("YYYY-MM-DD HH:mm:ss")); // 2018-12-12 10:33:40
        // 设置月份(例如当前是2024-12-12,设置月份为8,则返回2024-09-12,因为月份从0开始)
        console.log(dayjs().set("month", 8).format("YYYY-MM-DD HH:mm:ss")); // 2024-09-12 10:33:40
        // 设置日期(例如当前是2024-12-12,设置日期为8,则返回2024-12-08)
        console.log(dayjs().set("date", 8).format("YYYY-MM-DD HH:mm:ss")); // 2024-12-08 10:33:40

        // 当前时间加一年
        console.log(dayjs().add(1, "year").format("YYYY-MM-DD HH:mm:ss")); // 2025-12-12 10:33:40
        // 当前时间减一年
        console.log(dayjs().subtract(1, "year").format("YYYY-MM-DD HH:mm:ss")); // 2023-12-12 10:34:43
        // 当前时间加一个月
        console.log(dayjs().add(1, "month").format("YYYY-MM-DD HH:mm:ss")); // 2025-01-12 10:34:43
        // 当前时间减一个月
        console.log(dayjs().subtract(1, "month").format("YYYY-MM-DD HH:mm:ss")); // 2024-11-12 10:34:43
        // 当前时间加一天
        console.log(dayjs().add(1, "day").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-13 10:34:43
        // 当前时间减一天
        console.log(dayjs().subtract(1, "day").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-11 10:34:43
        // 当前时间加一小时
        console.log(dayjs().add(1, "hour").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 11:34:43
        // 当前时间减一小时
        console.log(dayjs().subtract(1, "hour").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 09:34:43
        // 当前时间加一分钟
        console.log(dayjs().add(1, "minute").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 10:35:43
        // 当前时间减一分钟
        console.log(dayjs().subtract(1, "minute").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 10:33:43
        // 当前时间加一秒
        console.log(dayjs().add(1, "second").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 10:38:26
        // 当前时间减一秒
        console.log(dayjs().subtract(1, "second").format("YYYY-MM-DD HH:mm:ss")); // 2024-12-12 10:38:24

        // 下面这些dayjs参数如果没有传入时分秒,则默认基于00:00:00进行比较
        // 获取当前时间与指定时间之间的时间差,返回相差的年份,如果是未来日期则返回负数
        console.log(dayjs().diff(dayjs("2023-08-08"), "year"));  // 1
        // 获取当前时间与指定时间之间的时间差,返回相差的月份,如果是未来日期则返回负数
        console.log(dayjs().diff(dayjs("2023-08-08"), "month")); // 16
        // 获取当前时间与指定时间之间的时间差,返回相差的天数,如果是未来日期则返回负数
        console.log(dayjs().diff(dayjs("2023-08-08"), "day")); // 492
        // 获取当前时间与指定时间之间的时间差,返回相差的小时数,如果是未来日期则返回负数
        console.log(dayjs().diff(dayjs("2024-12-12 10:41:40"), "hour")); // 10
        // 获取当前时间与指定时间之间的时间差,返回相差的分钟数,如果是未来日期则返回负数
        console.log(dayjs().diff(dayjs("2024-12-12 10:41:40"), "minute")); // 640
        // 获取当前时间与指定时间之间的时间差,返回相差的秒数,如果是未来日期则返回负数
        console.log(dayjs().diff(dayjs("2024-12-12 10:41:40"), "second")); // 23
        // 获取当前时间与指定时间之间的时间差,返回相差的毫秒数,如果是未来日期则返回负数
        console.log(dayjs().diff(dayjs("2024-12-12 10:41:40"), "millisecond")); // 155115

        // 获取时间的开始和结束的日期对象
        // 本年的开始日期
        console.log(dayjs().startOf("year").format("YYYY-MM-DD HH:mm:ss"));
        // 本月开始日期
        console.log(dayjs().startOf("month").format("YYYY-MM-DD HH:mm:ss"));
        // 本周开始日期
        console.log(dayjs().startOf("week").format("YYYY-MM-DD HH:mm:ss"));
        // 当天开始日期
        console.log(dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"));
        // 本年结束日期
        console.log(dayjs().endOf("year").format("YYYY-MM-DD HH:mm:ss"));
        // 本月结束日期
        console.log(dayjs().endOf("month").format("YYYY-MM-DD HH:mm:ss"));
        // 本周结束日期
        console.log(dayjs().endOf("week").format("YYYY-MM-DD HH:mm:ss"));
        // 当天结束日期
        console.log(dayjs().endOf("day").format("YYYY-MM-DD HH:mm:ss"));
        
        // 日期格式化模板
        // 指定年月日时分秒
        console.log(dayjs('2024-12-11 08:33:50').format("YYYY/MM/DD HH/mm/ss"));
        console.log(dayjs('2024-12-11').format("YYYY/MM/DD")); // 不加时分秒,则默认00:00:00
        // 指定年月日
        console.log(dayjs('2024-12-11 08:33:50').format("YYYY-MM-DD HH-mm-ss"));
        console.log(dayjs('2024-12-11').format("YYYY-MM-DD")); // 不加时分秒,则默认00:00:00
        // 获取当天
        console.log(dayjs().format("YYYY/MM/DD HH/mm/ss"));
        console.log(dayjs().format("YYYY/MM/DD")); // 不加时分秒,则默认00:00:00
        console.log(dayjs().format("YYYY-MM-DD HH-mm-ss"));
        console.log(dayjs().format("YYYY-MM-DD")); // 不加时分秒,则默认00:00:00

        // dayjs复制
        const dayjs1 = dayjs();
        const dayjs2 = dayjs1.clone();
        console.log(dayjs1 === dayjs2); // false
    </script>
</body>

</html>