在当前的Chrome,Firefox和Safari Intl.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错误实现的最佳方法是什么?
答案 0 :(得分: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
应具有的正确格式的事实。