在当前的Chrome浏览器中,区域设置Intl.DateTimeFormat
(瑞士的意大利语部分)的Firefox和Safari 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的错误实现的最佳方法是什么?
最佳答案
不确定最好但是最简单的应该是这样的:
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
应该具有的正确格式的事实。