Если вы хотите принудительно установить определенный формат для каждого языка, toLocaleString может помочь с языковой частью для каждого компонента, а затем расположите компоненты в нужном порядке, например,
function formatDate(date, langCode) {
var day = date.toLocaleString(langCode, {day: '2-digit'}); // DD
var month = date.toLocaleString(langCode, {month: 'short'}); // MMM
var year = date.toLocaleString(langCode, {year: 'numeric'}); // YYYY
return `${day} ${month}, ${year}`;
}
// Examples
var d = new Date();
['en', // English
'ja', // Japanese
'zh-CN', // Chinese, simplified
'fr', // French
'ar' // Arabic
].forEach(lang => console.log(formatDate(d, lang)));
// Attempt to use prefered browser language
console.log(formatDate(d, navigator.languages));
Однако это может не подходить для каждого случая, и вам все равно нужно определить, какой язык использовать.Вы можете попробовать navigator.languages , это экспериментально, но достаточно хорошо поддерживается.Однако я не доверяю этому, так как считаю, что пользователи редко устанавливают желаемые значения и просто принимают значения по умолчанию.Однако, если кто-то использует браузер, надеюсь, он поймет дату на языке браузера по умолчанию, при условии, что она имеет однозначный формат (например, ДД МММ, ГГГГ).
Существует множество дубликатов для определения языка, и, вероятно, существуют языки, которые не поддерживаются определенными реализациями.
PS.Существует много разных наборов токенов для форматирования даты, я использовал их для moment.js , есть много других.