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>