微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

date.toLocaleDateString 与区域设置阿拉伯语的转换在 Chrome 和 firefox 中产生不同的结果

如何解决date.toLocaleDateString 与区域设置阿拉伯语的转换在 Chrome 和 firefox 中产生不同的结果

我有一个使用 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 以获取更多信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。