如何使用英文数字在JavaScript中将日期格式化为阿拉伯语?

7
我希望日期的格式如下所示:

日期:2016-12-04 转换为 الأحد، 4 ديسمبر، 2016

但我得到的结果是数字被转换成了阿拉伯数字。我想要日期和年份用英文数字表示:

الأحد، ٤ ديسمبر، ٢٠١٦

我使用了以下代码将日期格式化为阿拉伯语。
var date = new Date('2016-12-04');
options = {
           weekday: 'long',
           year: 'numeric',
           month: 'short',
           day: 'numeric',
          };
var dateString = date.toLocaleDateString('ar-SA', options);
alert(dateString);

希望我下面的回答解决了你的问题? - Mohsen Alyafei
5个回答

4

找到了一个解决方案 在 JavaScript 中使用阿拉伯语月份进行日期转换和操作

我修改后的代码以获得所需的输出如下。

var date = new Date('2016-12-04');
var months = ["يناير", "فبراير", "مارس", "إبريل", "مايو", "يونيو",
  "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"
];
var days = ["اﻷحد", "اﻷثنين", "الثلاثاء", "اﻷربعاء", "الخميس", "الجمعة", "السبت"];
var delDateString = days[date.getDay()] + ', ' + date.getDate() + ' ' + months[date.getMonth()] + ', ' + date.getFullYear();

console.log(delDateString); // Outputs اﻷحد, 4 ديسمبر, 2016


请注意,new Date('2016-12-04')会将字符串解析为UTC时间,但是您的* get *方法正在使用本地时间。位于格林威治以西时区的用户将看到前一天的日期。 - RobG

4
你可以使用这些区域设置来指定编号系统。
let date = newDate.toLocaleDateString('ar-EG-u-nu-latn',{weekday: 'long', year: 'numeric', month: 'short', day: 'numeric'});

还可以查看这个 MDN 链接,以了解更多信息。


1
非常感谢你 (Jazak Allah khairan)。 - Muhamed

3
在JavaScript中以英文数字(西阿拉伯数字)获取伊斯兰教日历日期的更好(更安全)的方法,不是使用特定国家的语言环境,如“ar-SA”、“ar-TN”或“ar-EG”,而是使用以下区域选项Intl.DateTimeFormat()构造函数
  1. 编号系统 (nu) 设置为latn(即西阿拉伯数字),和

  2. 日历类型 (ca) 设置为islamic,和

  3. 语言环境 设置为ar

可以将区域选项作为数组传递以进行多个选项:["ar-u-ca-islamic","ar-u-nu-latn"] 或者作为一个字符串:"ar-u-ca-islamic-nu-latn" 这里是一个示例代码,将打印今天的伊斯兰教日期,使用西方阿拉伯数字(英文数字):
我还包括了一张表格,给出了所有阿拉伯语“ar”区域设置的列表和默认输出,以便查看它们在月份名称和默认数字系统方面的差异。

let options = {day: 'numeric', month: 'long',weekday:'long',year:'numeric'};

// 1st method
let locales = ["ar-u-ca-islamic","ar-u-nu-latn"];
console.log(new Intl.DateTimeFormat(locales, options).format(Date.now()));

// 2nd method
locales = "ar-u-ca-islamic-nu-latn";
console.log(new Intl.DateTimeFormat(locales, options).format(Date.now()));

enter image description here


1
要在JavaScript中获取当前的伊斯兰教历日期,我们可以使用Intl.DateTimeFormat
要获取阿拉伯语显示:
new Intl.DateTimeFormat('ar-TN-u-ca-islamic', {day: 'numeric', month: 'long',weekday: 'long',year : 'numeric'}).format(Date.now());

预期输出:
السبت، 4 صفر 1443 هـ

https://medium.com/@Saf_Bes/get-today-hijri-date-in-javascript-90855d3cd45b


这里使用突尼斯的阿拉伯语区域设置来获取西部阿拉伯数字(英文数字),这是危险的,因为区域设置可能会更改。 - Mohsen Alyafei
请参见上面的替代解决方案,以获取伊斯兰日期的英文数字。 - Mohsen Alyafei

0

请尝试使用“ar-MA”(摩洛哥)代替“ar-SA”。


应该是一个注释 - George Kagan
为什么这应该是一个注释呢?这是一个有效的答案: https://www.ibm.com/support/knowledgecenter/SSS28S_3.0.0/com.ibm.help.forms.doc/locale_spec/i_xfdl_r_formats_ar_MA.html - Sarmad
我尝试了ar_MA区域设置,它在Google Chrome V48中显示阿拉伯数字。但是在Firefox中同样有效。 https://jsfiddle.net/daj2jm3p/3/ - Shebin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接