@ryanuo/utils
Version:
提供多种实用工具函数,涵盖算法、浏览器操作、网络请求等多个领域
54 lines (53 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dateFormat = dateFormat;
exports.dayjs = void 0;
var _dayjs = _interopRequireDefault(require("dayjs"));
var _is = require("./is.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function dateFormat(date2, fmt = "YYYY-MM-dd") {
if (!(0, _is.isDate)(date2)) throw new TypeError("Parameter must be a valid Date.");
const year = date2.getFullYear().toString();
const padLengths = {
Y: 4,
y: 2,
M: 2,
d: 2,
H: 2,
h: 2,
m: 2,
s: 2,
S: 3,
q: 1
};
const opt = {
"Y+": () => year,
"y+": matched => year.slice(-matched.length),
"M+": (date2.getMonth() + 1).toString(),
"d+": date2.getDate().toString(),
"H+": date2.getHours().toString(),
"h+": () => {
const hour = date2.getHours();
return (hour % 12 || 12).toString();
},
"m+": date2.getMinutes().toString(),
"s+": date2.getSeconds().toString(),
"q+": Math.floor((date2.getMonth() + 3) / 3).toString(),
"S+": date2.getMilliseconds().toString()
};
let matchRes;
for (const k in opt) {
matchRes = fmt.match(new RegExp(k, "g"));
matchRes?.forEach(matchedItem => {
const placeholder = k.charAt(0);
const padLength = padLengths[placeholder] || matchedItem.length;
const value = opt[k];
const replacement = (0, _is.isFunction)(opt[k]) ? value(matchedItem) : value;
fmt = fmt.replace(matchedItem, replacement.toString().padStart(Math.max(matchedItem.length, padLength), "0"));
});
}
return fmt;
}
const dayjs = exports.dayjs = _dayjs.default;