Intl.DateTimeFormat 不输出 2 位数月 + 日的分隔符 (IE 11)

Intl.DateTimeFormat does not output separators on 2 digit month + day (IE 11)

我在 Intl.DateTimeFormat MDN

中遇到了一个错误

环境

Internet Explorer 11.0.6900.19080 Windows 7

错误

当月 + 日仅使用“2 位数字”选项时,函数不输出任何分隔符,无论是 / 代表 en 还是 . 代表 de。这仅在 Windows 7 上的 Internet Explorer 中发生。Windows 10 上的 Internet Explorer 11 + Edge 正在运行。未测试低于 11.

Internet Explorer

Intl.DateTimeFormat('en', {month: "2-digit", day: "2-digit"}).format(new Date());
> "‎07‎ ‎25"

Intl.DateTimeFormat('en', {year: "numeric", month: "2-digit", day: "2-digit"}).format(new Date());
> "‎07‎/‎25‎/‎2018"

Chrome

Intl.DateTimeFormat('en', {month: "2-digit", day: "2-digit"}).format(new Date());
> "07/25"

Intl.DateTimeFormat('en', {year: "numeric", month: "2-digit", day: "2-digit"}).format(new Date());
> "07/25/2018"

上下文

出现这个错误的时候我已经使用了react-intl,并且错误追溯到原生Intl.DateTimeFormat()

<FormattedDate
    value={new Date()}
    month="2-digit"
    day="2-digit"
/>

根据 caniuse.com DateTimeFormat 在发布版本 oct 17 ,2013 上添加了对 IE11 的完全支持,所以可能是你的 Windows 7 有一个旧版本,你可以通过单击版本号旁边的 link 来检查。

要解决您的问题,您可以

  • 更新 IE11(我认为这不是解决方案)这只对你有效
  • 根据您的应用支持的语言手动添加分隔符

Intl.DateTimeFormat('en', {
    month: "2-digit",
    day: "2-digit"
  })
  .format(new Date()).split(" ").join("/");

  • 使用以下polyfill获得全力支持