Вывод форматирования даты с использованием объекта Intl не обязательно согласован между реализациями. Для меня код OP дает разные результаты в разных браузерах:
- Safari: ٦ أبريل ، ٢٠٢٠/١٣ شعبان ، ١٤٤١
- Firefox: ٦ أبريل ٢٠٢٠/١٣ شعبان ١٤٤١ 100
- Chrome: 6 2020بريل 2020/13 14عبان 1441 هـ
Ни один из них не является одинаковым по формату или символам.
Если вы хотите убедитесь, что компоненты находятся в нужном порядке, используйте formatToParts , соберите детали и выведите их в нужном вам порядке. Просто убедитесь, что результат однозначный (например, используйте название месяца, как вы сделали).
let partsHeg = new Intl.DateTimeFormat('ar-FR-u-ca-islamic', {
day: 'numeric',
month: 'long',
year: 'numeric'
}).formatToParts(Date.now());
partsHeg.forEach(part => {
if (part.type != 'literal') {
console.log(part.type + ': ' + part.value);
}
});
let partsGre = new Intl.DateTimeFormat('ar-US', {
day: 'numeric',
month: 'long',
year: 'numeric'
}).formatToParts(Date.now());
partsGre.forEach(part => {
if (part.type != 'literal') {
console.log(part.type + ': ' + part.value);
}
});