You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
4.4 KiB
137 lines
4.4 KiB
!(function (t, e) {
|
|
if ('object' == typeof exports && 'undefined' != typeof module) {
|
|
module.exports = e();
|
|
} else {
|
|
if ('function' == typeof define && define.amd) {
|
|
define(e);
|
|
} else {
|
|
(t = 'undefined' != typeof globalThis ? globalThis : t || self).dayjs_plugin_timezone = e();
|
|
}
|
|
}
|
|
})(this, function () {
|
|
'use strict';
|
|
|
|
var t = {
|
|
year: 0,
|
|
month: 1,
|
|
day: 2,
|
|
hour: 3,
|
|
minute: 4,
|
|
second: 5
|
|
};
|
|
var e = {};
|
|
return function (n, i, o) {
|
|
var r;
|
|
var a = function (t, n, i) {
|
|
if (void 0 === i) {
|
|
i = {};
|
|
}
|
|
var o = new Date(t);
|
|
var r = (function (t, n) {
|
|
if (void 0 === n) {
|
|
n = {};
|
|
}
|
|
var i = n.timeZoneName || 'short';
|
|
var o = t + '|' + i;
|
|
var r = e[o];
|
|
r ||
|
|
((r = new Intl.DateTimeFormat('en-US', {
|
|
hour12: false,
|
|
timeZone: t,
|
|
year: 'numeric',
|
|
month: '2-digit',
|
|
day: '2-digit',
|
|
hour: '2-digit',
|
|
minute: '2-digit',
|
|
second: '2-digit',
|
|
timeZoneName: i
|
|
})),
|
|
(e[o] = r));
|
|
return r;
|
|
})(n, i);
|
|
return r.formatToParts(o);
|
|
};
|
|
var u = function (e, n) {
|
|
for (var i = a(e, n), r = [], u = 0; u < i.length; u += 1) {
|
|
var f = i[u];
|
|
var s = f.type;
|
|
var m = f.value;
|
|
var c = t[s];
|
|
if (c >= 0) {
|
|
r[c] = parseInt(m, 10);
|
|
}
|
|
}
|
|
var d = r[3];
|
|
var l = 24 === d ? 0 : d;
|
|
var v = r[0] + '-' + r[1] + '-' + r[2] + ' ' + l + ':' + r[4] + ':' + r[5] + ':000';
|
|
var h = +e;
|
|
return (o.utc(v).valueOf() - (h -= h % 1000)) / 60000;
|
|
};
|
|
var f = i.prototype;
|
|
f.tz = function (t, e) {
|
|
if (void 0 === t) {
|
|
t = r;
|
|
}
|
|
var n = this.utcOffset();
|
|
var i = this.toDate();
|
|
var a = i.toLocaleString('en-US', {
|
|
timeZone: t
|
|
});
|
|
var u = Math.round((i - new Date(a)) / 1000 / 60);
|
|
var f = o(a)
|
|
.$set('millisecond', this.$ms)
|
|
.utcOffset(15 * -Math.round(i.getTimezoneOffset() / 15) - u, true);
|
|
if (e) {
|
|
var s = f.utcOffset();
|
|
f = f.add(n - s, 'minute');
|
|
}
|
|
f.$x.$timezone = t;
|
|
return f;
|
|
};
|
|
f.offsetName = function (t) {
|
|
var e = this.$x.$timezone || o.tz.guess();
|
|
var n = a(this.valueOf(), e, {
|
|
timeZoneName: t
|
|
}).find(function (t) {
|
|
return 'timezonename' === t.type.toLowerCase();
|
|
});
|
|
return n && n.value;
|
|
};
|
|
var s = f.startOf;
|
|
f.startOf = function (t, e) {
|
|
if (!this.$x || !this.$x.$timezone) {
|
|
return s.call(this, t, e);
|
|
}
|
|
var n = o(this.format('YYYY-MM-DD HH:mm:ss:SSS'));
|
|
return s.call(n, t, e).tz(this.$x.$timezone, true);
|
|
};
|
|
o.tz = function (t, e, n) {
|
|
var i = n && e;
|
|
var a = n || e || r;
|
|
var f = u(+o(), a);
|
|
if ('string' != typeof t) {
|
|
return o(t).tz(a);
|
|
}
|
|
var s = (function (t, e, n) {
|
|
var i = t - 60 * e * 1000;
|
|
var o = u(i, n);
|
|
if (e === o) {
|
|
return [i, e];
|
|
}
|
|
var r = u((i -= 60 * (o - e) * 1000), n);
|
|
return o === r ? [i, o] : [t - 60 * Math.min(o, r) * 1000, Math.max(o, r)];
|
|
})(o.utc(t, i).valueOf(), f, a);
|
|
var m = s[0];
|
|
var c = s[1];
|
|
var d = o(m).utcOffset(c);
|
|
d.$x.$timezone = a;
|
|
return d;
|
|
};
|
|
o.tz.guess = function () {
|
|
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
};
|
|
o.tz.setDefault = function (t) {
|
|
r = t;
|
|
};
|
|
};
|
|
});
|
|
|