/
index.js
38 lines (36 loc) · 1.15 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { FORMAT_DEFAULT } from '../../constant'
export default (o, c, d) => { // locale needed later
const proto = c.prototype
const oldFormat = proto.format
d.en.ordinal = (number) => {
const s = ['th', 'st', 'nd', 'rd']
const v = number % 100
return `[${number}${(s[(v - 20) % 10] || s[v] || s[0])}]`
}
// extend en locale here
proto.format = function (formatStr) {
const locale = this.$locale()
const utils = this.$utils()
const str = formatStr || FORMAT_DEFAULT
const result = str.replace(/Q|wo|gggg|Do|X|x|k{1,2}|S/g, (match) => {
switch (match) {
case 'Q':
return Math.ceil((this.$M + 1) / 3)
case 'Do':
return locale.ordinal(this.$D)
case 'gggg':
return this.weekYear()
case 'wo':
return locale.ordinal(this.week(), 'W') // W for week
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)
default: // 'x'
return this.$d.getTime()
}
})
return oldFormat.bind(this)(result)
}
}