是否有可能通过Moment.js得到一个数字的序数?例如,如果我传入数字7并且Momentjs将返回'7th'
到目前为止,我已经尝试了所有这些但没有一个有效
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格式.因此,如果日期是2015年12月7日,我想将其显示为第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');
演示
文件:
解析:http://momentjs.com/docs/#/parsing/string-format/
显示:http://momentjs.com/docs/#/displaying/format/
在上面接受的答案的基础上,您可以避免将日期添加到任意日期,而只需执行以下操作:
moment('3', 'DD').format('Do');
编辑
如评论中所指出的,以上答案将为上述任何数字返回无效日期30
,因此包括以下内容的更稳定的解决方案31st
是:
moment(`2012-10-${day}`).format('Do')