我有一个高度依赖日期的应用程序,该应用程序在Chrome上运行流畅,但在FireFox上却无法正常运行,因为它会因为TimezoneOffset而更改我的日期对象
在Chrome中,当我分别创建new Date()
和setHours(0,0,0)
时,我得到Thu Jul 12 2018 00:00:00 GMT+0200 (Central European summer time)
,但是在FireFox中执行相同的操作时,我得到了Date 2018-07-11T22:00:00.549Z
,这对我的应用程序是有害的。 / p>
有没有办法解决这个问题?因此在firefox中,它也会使用我要求的日期。因为如果它保持这样,它将永远不会到达该月的最后一天,因为它将停留在30-month-year 22:00:00
而不是31-month-year 00:00:00
上,并且就像第31个不存在了。 >
因此,根据FireFox的说法,我的员工现在从06:30(AM)到15:00(3PM)工作,而不是从8:30(AM)到17:00(5 PM)工作。
编辑
现在我想出了一些可行的方法,但对我来说似乎很肮脏。
var is_firefox = /firefox/i.test(navigator.userAgent);
var today = new Date();
today.setHours(0,0,0);
if(is_firefox){
var timezoneOffset = Math.abs(today.getTimezoneOffset());
timezoneOffset = timezoneOffset/60;
today.add(timezoneOffset).hours();
}
这将检查所使用的浏览器是否为firefox,如果是,则获取timezoneOffset,将其转换为小时。并使用dateJS将这些小时数添加到日期对象中。但是这种方式我必须对我拥有的每个日期对象执行此操作。
答案 0 :(得分:0)
如果您的应用程序严重依赖日期,您是否尝试过使用MomentJS?它不会依靠Chrome / Firefox来计算和显示日期。
否则,我想您已通过控制台记录了这些原始Date实例以获得这种显示? 您可以访问Date.toUTCString()在Mozilla和Chrome中获得相同的格式。
最后,如果显示不一样,可能是由于计算机上的浏览器版本不同? 另外,浏览器会从计算机上获取您的时区偏移,如果您以不同的配置运行这些测试,则可能会获得不同的时区偏移(很明显,我知道,但值得一说)