如何在Moment.js中基于ar-sa本地化自定义数值格式(显示0-9)
解决Moment.js自定义ar-sa本地化显示阿拉伯数字的问题
嘿,这个需求其实很容易实现!Moment.js的本地化配置里专门提供了numerals属性,用来定义日期中数值部分的显示格式。你只需要在自定义locale中覆盖这个属性,指定为0-9的阿拉伯数字数组就行。
完整的代码实现
moment.defineLocale('ar-sa-mine', { parentLocale: 'ar-sa', // 覆盖numerals属性,使用0-9的阿拉伯数字 numerals: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] });
为什么这样有效?
默认的ar-sa本地化中,numerals属性被设置为阿拉伯文数字数组([٠, ١, ٢, ٣, ٤, ٥, ٦, ٧, ٨, ٩]),所以Moment.js会用这些字符渲染日期里的数字。当你在自定义locale中把这个数组替换成0-9的阿拉伯数字后,所有日期的数值部分(比如日、月、年)都会自动切换成你想要的格式。
测试验证
你可以用下面的代码快速验证效果:
// 切换到自定义本地化规则 moment.locale('ar-sa-mine'); // 输出当前日期,应该显示类似"29/05/2024"而非"٢٩/٠٥/٢٠٢٤" console.log(moment().format('DD/MM/YYYY'));
这样就能完美实现你的需求啦!
内容的提问来源于stack exchange,提问作者Houssam Badri
相关产品推荐
相关产品推荐

