diff --git a/src/plugin/advancedFormat.js b/src/plugin/advancedFormat.js index 1bd6ef29..0820ee25 100644 --- a/src/plugin/advancedFormat.js +++ b/src/plugin/advancedFormat.js @@ -3,13 +3,10 @@ import { FORMAT_DEFAULT } from '../constant' export default (o, c, d) => { // locale needed later const proto = c.prototype const oldFormat = proto.format - // eslint-disable-next-line no-nested-ternary d.en.ordinal = (number) => { - let suffix = 'th' - if (![11, 12].includes(number)) { - suffix = ['st', 'nd', 'rd'][(number % 10) - 1] || suffix - } - return `${number}[${suffix}]` + 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, localeObject) { diff --git a/test/plugin/advancedFormat.test.js b/test/plugin/advancedFormat.test.js index dbc809df..144a2587 100644 --- a/test/plugin/advancedFormat.test.js +++ b/test/plugin/advancedFormat.test.js @@ -38,6 +38,10 @@ it('Format Day of Month Do 1 - 31', () => { expect(dayjs(d).format('Do')).toBe(moment(d).format('Do')) d = '2018-05-11' expect(dayjs(d).format('Do')).toBe(moment(d).format('Do')) + d = '2018-05-12' + expect(dayjs(d).format('Do')).toBe(moment(d).format('Do')) + d = '2018-05-13' + expect(dayjs(d).format('Do')).toBe(moment(d).format('Do')) d = '2018-05-22' expect(dayjs(d).format('Do')).toBe(moment(d).format('Do')) })