javascript seems to be using time zones backwards

2020-02-12 07:03发布

问题:

I've run the following in the console on Firefox (version 21) and I'm getting results I don't expect.

new Date(1362891600000);

var date = new Date(1362891600000);
var time = date.getHours();
new Date(date.setHours(date.getHours() + 24));

The result really throws me for a loop.

The first date shows up as Eastern Daylight Time, while the second one shows up with Eastern Standard Time. It's totally backwards. This does not happen with IE or with Chrome.

What's going on here?

回答1:

This is definitely a bug in Firefox. You should probably report it to them.

However, be aware that anything after the offset is non-standard and support varies wildly across browsers and operating systems.

For example, some browsers display a time zone name, while others display an abbreviation or internal id. Also, some keep their own strings, and some use the values returned by the operating system. And on Windows, there is a different time zone database than on Linux or Mac. Also, some browsers may localize this string using language, locale, or culture settings.

You can display it to a user, if you know the value is in their own local time zone. But don't rely on it for anything critical.