如何在Firefox中的js中获取本地日期时间



我有一个严重依赖日期的应用程序,它在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,这对我的应用程序不利。。

有办法解决这个问题吗?所以在firefox中,它也使用我请求的日期。因为如果它一直这样,它就永远不会到达月的最后一天,因为它会停在30-month-year 22:00:00而不是31-month-year 00:00:00,就像31号从未存在过一样。。

也正因为如此,根据FireFox的说法,我的员工现在从早上6点30分工作到下午3点,而不是早上8点30分到下午5点。

编辑

现在我想出了一些有效但对我来说似乎很脏的东西。

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,如果是,它会获取时区偏移,并将其转换为小时。并使用dateJS将这些小时添加到日期对象中。。但通过这种方式,我必须对我的每一个约会对象都这样做。。

如果您的应用程序严重依赖日期,您是否尝试过使用MomentJS?它不会依赖Chrome/FFirefox来计算和显示日期。

否则,我想你已经安慰记录了这些原始日期实例来获得这种显示?您可以访问Date.toUTCString((以在Mozilla和Chrome中获得相同的格式。

最后,如果显示不一样,也许是因为你电脑上的浏览器版本不同?此外,浏览器会从您的计算机中获取您的时区ofset,如果您在不同的配置中运行这些测试,您可能会获得不同的时区ofSet(很明显,我知道,但值得一提(

最新更新