在 intlDateTimeFormat 中使用非阿拉伯数字

Tim*_*Tim 2 javascript

似乎找不到这个问题的答案,所以在这里提问。我想在阿拉伯语区域设置中使用非阿拉伯数字,这可能吗?

\n
const intlDateTimeFormat.format(new Date());\nintlDateTimeFormat = new Intl.DateTimeFormat('ar-SA', { month: 'short', day: 'numeric' });\n// "\xd9\xa2\xd9\xa0 \xd8\xb4\xd9\x88\xd8\xa7\xd9\x84"\n
Run Code Online (Sandbox Code Playgroud)\n

但我想要...

\n
const intlDateTimeFormat.format(new Date());\nintlDateTimeFormat = new Intl.DateTimeFormat('ar-SA', { something? , month: 'short', day: 'numeric' });\n// "01 \xd8\xb4\xd9\x88\xd8\xa7\xd9\x84"\n
Run Code Online (Sandbox Code Playgroud)\n

有什么建议

\n

Moh*_*fei 6

您正在寻找的是使用阿拉伯语言区域设置(即阿拉伯文本)使用拉丁(英语)数字(或您选择的任何其他编号系统)来格式化日期。

\n

请注意,使用阿拉伯语言区域设置时,编号系统将默认为所有阿拉伯区域设置的阿拉伯-东方数字(即,除了五 (5) 个阿拉伯区域"\xd9\xa0\xd9\xa1\xd9\xa2\xd9\xa3\xd9\xa4\xd9\xa5\xd9\xa6\xd9\xa7\xd9\xa8\xd9\xa9" 设置将使用阿拉伯-西方(拉丁)数字之外的数字0123456789;这些是ar-DZar-EHar-LYar-MAar-TN区域设置。

\n

当您使用ar-SA沙特阿拉伯时,日期将默认使用阿拉伯东部数字"\xd9\xa0\xd9\xa1\xd9\xa2\xd9\xa3\xd9\xa4\xd9\xa5\xd9\xa6\xd9\xa7\xd9\xa8\xd9\xa9"

\n

您可以更改为使用阿拉伯-西方(拉丁)数字,0123456789而不管以下任一者使用的区域设置:

\n

1.在语言环境中指定latn为 Unicode 编号系统。

\n
new Intl.DateTimeFormat(\'ar-SA-u-nu-latn\',{month:\'short\',day:\'numeric\' }).format(new Date());\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n

2.指定latn为编号系统选项

\n
new Intl.DateTimeFormat(\'ar-SA\',{month:\'short\',day:\'numeric\',numberingSystem:\'latn\'}).format(new Date());\n
Run Code Online (Sandbox Code Playgroud)\n

无论哪种情况,您都将输出阿拉伯字符串,但带有英语(阿拉伯-西方数字)。

\n
**There are other numbering systems that you can use**: \n "arab", "arabext", " bali", "beng", "deva", "fullwide",\n " gujr", "guru", "hanidec", "khmr", " knda", "laoo",\n "latn", "limb", "mlym", " mong", "mymr", "orya",\n "tamldec", " telu", "thai", "tibt".\n
Run Code Online (Sandbox Code Playgroud)\n

这是一个例子。

\n

\r\n
\r\n
new Intl.DateTimeFormat(\'ar-SA-u-nu-latn\',{month:\'short\',day:\'numeric\' }).format(new Date());\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n