使用Intl.DateTimeFormat和en-US区域设置,Safari中的日期会相差一位 [英] Dates in Safari appear off by one using Intl.DateTimeFormat with en-US locale

查看:0
本文介绍了使用Intl.DateTimeFormat和en-US区域设置,Safari中的日期会相差一位的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

看起来Safari的Int.DateTimeFormat实现假设3月份的第二个星期日始终是DST时间截止时间,这是不正确的,因为在2007年之前,它是4月份的第一个星期日。当DST结束时,这似乎也会影响到另一端。PS:此代码在美国印第安纳州运行,该州位于东部时区(GMT-4)

更具体地说...

  • 2007及更高版本:适用于所有日期。
  • 2006:3月的第二个星期日和4月的第一个星期日以及10月的最后一个星期日和11月的第一个星期日之间的日期不正确。
  • 2005及更早版本:在3月的第二个星期日和11月的第一个星期日之间的所有日期都不正确。
这里有一个小JSBin,它概述了出现问题的确切日期(请注意,它在除Safari之外的所有浏览器上都能正常工作) https://jsbin.com/mayadehowu/edit?js,output

var formatter = new Intl.DateTimeFormat('en');
var date = new Date('6/2/2005');
console.log(formatter.format(date)); // => outputs "6/1/2005"

我进一步调查,这可能是由于ECMA规范中的这一变化。

还有没有人遇到过这个问题?如果是这样的话,你有什么解决方案来解决这个问题?我需要一个补丁,但我对通过在特定情况下增加一个小时来修补Safari特定的错误持怀疑态度,因为如果Safari修复了这个问题,我们的逻辑将再次被打破。

推荐答案

该问题最终已在Safari 14.1Per@NathanQ的评论中修复

这篇关于使用Intl.DateTimeFormat和en-US区域设置,Safari中的日期会相差一位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆