问题描述
我有一个使用 date.toLocaleDateString 格式化日期的函数 我发现当我将语言环境设置为“阿拉伯语”时,Chrome 中的结果与 FF 和 Safari 中的结果不同。
let date = new Date();
const dateOptions = {
day: "2-digit",month: "2-digit",year: "numeric"
};
console.log(date.toLocaleDateString("ar",dateOptions));
这是代码沙盒链接 https://codesandbox.io/s/loving-haslett-mj6b0?file=/src/index.js
在 chrome 中,日期显示为 27 /01 /2021,而在 FF 和 Safari 中,它被转换为阿拉伯语。
我们如何确保跨浏览器的一致性?
解决方法
尝试使用 ar-eg
而不是 ar
:
console.log(date.toLocaleDateString("ar-eg",dateOptions));
但请记住,toLocaleDateString
实现始终取决于应用程序,此外还有一些浏览器未实现 locale
/option
参数。
您可以使用以下功能检查语言和选项支持:
function dateSupportsLocales(language) {
try {
new Date().toLocaleDateString(language);
} catch (e) {
return e.name !== 'RangeError';
}
return true;
}
function dateSupportsOptions() {
try {
new Date().toLocaleDateString('en',{});
return true;
}
catch (e) { }
return false;
}
另请查看 Date.prototype.toLocaleDateString
MDN Reference 以获取更多信息。