3

在当前的 Chrome、Firefox 和 SafariIntl.DateTimeFormat的语言环境it-CH(瑞士的意大利部分)中是错误的:

new window.Intl.DateTimeFormat('it-CH').format(new Date()) // -> "6/7/2017"
new window.Intl.DateTimeFormat('fr-CH').format(new Date()) // -> "06.07.2017"
new window.Intl.DateTimeFormat('de-CH').format(new Date()) // -> "06.07.2017"

第一行的输出是错误的。在瑞士所有地区,格式应为“dd.mm.yyyy”

有趣的是,IE11 和 Edge 为上述代码片段生成了正确的输出。

在给定浏览器中修复/修补/覆盖 window.Intl 错误实现的最佳方法是什么?

4

1 回答 1

1

不确定最好但最简单的应该是这样的:

var nativeDateTimeFormat = window.Intl.DateTimeFormat;
window.Intl.DateTimeFormat = function(locale) {
  var native = nativeDateTimeFormat(locale);
  if (locale === 'it-CH') {
    native.format = function() {
      return nativeDateTimeFormat('fr-CH').format();
    }
  }
  return native;
}

此解决方案使用具有应fr-CH具有的正确格式的事实it-CH

于 2017-07-07T15:11:25.910 回答