使用 Moment.js 获取序号
Getting the number ordinal with Moment.js
是否可以通过 Moment.js 获取数字的序数?例如,如果我传入数字 7,Momentjs 将 return '7th'
到目前为止,我已经尝试了所有这些,但 none 奏效了
console.log(moment("12", "D Do")); // returns n {_isAMomentObject: true, _i: "12", _f: "D Do", _isUTC: false, _pf: Object…}
console.log(moment("3", "D Do")); // returns n {_isAMomentObject: true, _i: "3", _f: "D Do", _isUTC: false, _pf: Object…}
console.log(moment(3).format("D Do")); // returns '1 1st'
console.log(moment('3').format("D Do")); // returns '1 1st'
console.log(moment().day('3').format("Do")); // returns '9th'
console.log(moment().day(3).format("D Do")); // returns '9 9th'
编辑:我应该提到我正在尝试处理一个日期。所以我得到了这种格式的日期 DD-MM-YYYY。因此,如果日期是 07-12-2015,我想将其显示为 7 号。
我不认为 Moment.js 提供这样的接口,因为它的用例非常有限。
如果您没有日期(例如排名),您可以使用以下内容:
function ordinal(number) {
switch (number) {
case 1:
case 21:
return number + 'st';
break;
case 2:
case 22:
return number + 'nd';
break;
case 3:
case 23:
return number + 'rd';
break;
default:
return number + 'th';
}
}
编辑:编辑问题的答案:
您可以执行以下操作:
const date = '3-12-2015';
moment(date, 'DD-MM-YYYY').format('Do');
文档:
根据上面接受的答案,您可以避免将日期添加到任意日期,而只需执行以下操作:
moment('3', 'DD').format('Do');
编辑
正如评论中指出的那样,上述答案将 return 为任何高于 30
的数字的无效日期,因此包含 31st
的更稳定的解决方案是:
moment(`2012-10-${day}`).format('Do')
moment.localeData().ordinal(23)
// 23rd
是否可以通过 Moment.js 获取数字的序数?例如,如果我传入数字 7,Momentjs 将 return '7th'
到目前为止,我已经尝试了所有这些,但 none 奏效了
console.log(moment("12", "D Do")); // returns n {_isAMomentObject: true, _i: "12", _f: "D Do", _isUTC: false, _pf: Object…}
console.log(moment("3", "D Do")); // returns n {_isAMomentObject: true, _i: "3", _f: "D Do", _isUTC: false, _pf: Object…}
console.log(moment(3).format("D Do")); // returns '1 1st'
console.log(moment('3').format("D Do")); // returns '1 1st'
console.log(moment().day('3').format("Do")); // returns '9th'
console.log(moment().day(3).format("D Do")); // returns '9 9th'
编辑:我应该提到我正在尝试处理一个日期。所以我得到了这种格式的日期 DD-MM-YYYY。因此,如果日期是 07-12-2015,我想将其显示为 7 号。
我不认为 Moment.js 提供这样的接口,因为它的用例非常有限。
如果您没有日期(例如排名),您可以使用以下内容:
function ordinal(number) {
switch (number) {
case 1:
case 21:
return number + 'st';
break;
case 2:
case 22:
return number + 'nd';
break;
case 3:
case 23:
return number + 'rd';
break;
default:
return number + 'th';
}
}
编辑:编辑问题的答案:
您可以执行以下操作:
const date = '3-12-2015';
moment(date, 'DD-MM-YYYY').format('Do');
文档:
根据上面接受的答案,您可以避免将日期添加到任意日期,而只需执行以下操作:
moment('3', 'DD').format('Do');
编辑
正如评论中指出的那样,上述答案将 return 为任何高于 30
的数字的无效日期,因此包含 31st
的更稳定的解决方案是:
moment(`2012-10-${day}`).format('Do')
moment.localeData().ordinal(23)
// 23rd