UNPKG

cloud-ui.vusion

Version:
69 lines (65 loc) 2.59 kB
import { FORMAT_DEFAULT } from 'dayjs/esm/constant'; export default (o, c) => { // locale needed later const proto = c.prototype; const oldFormat = proto.format; proto.format = function (formatStr) { const locale = this.$locale(); if (!this.isValid()) { return oldFormat.bind(this)(formatStr); } const utils = this.$utils(); const str = formatStr || FORMAT_DEFAULT; const result = str.replace( /\[([^\]]+)]|QQ|Q|wo|ww|w|WWWW|WWW|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, (match) => { switch (match) { case 'Q': case 'QQ': return utils.s( Math.ceil((this.$M + 1) / 3), match === 'Q' ? 1 : 2, 'Q', ); case 'Do': return locale.ordinal(this.$D); case 'gggg': return this.weekYear(); case 'GGGG': return this.isoWeekYear(); case 'wo': return locale.ordinal(this.week(), 'W'); // W for week case 'w': case 'ww': return utils.s(this.week(), match === 'w' ? 1 : 2, '0'); case 'W': case 'WW': return utils.s(this.isoWeek(), match === 'W' ? 1 : 2, '0'); // 为了支持W01这样的格式 case 'WWW': return 'W' + this.isoWeek(); case 'WWWW': return 'W' + utils.s(this.isoWeek(), 2, '0'); case 'k': case 'kk': return utils.s( String(this.$H === 0 ? 24 : this.$H), match === 'k' ? 1 : 2, '0', ); case 'X': return Math.floor(this.$d.getTime() / 1000); case 'x': return this.$d.getTime(); case 'z': return `[${this.offsetName()}]`; case 'zzz': return `[${this.offsetName('long')}]`; default: return match; } }, ); return oldFormat.bind(this)(result); }; };