Get utc offset from timezone in Javascript

2019-02-16 20:31发布

问题:

I need a Javascript function that given a timezone, returns the current utc offset.

For example, theFuncIneed('US/Eastern') -> 240

Any idea?

Thanks

回答1:

In general, this is not possible.

  • US/Eastern is an identifier for a time zone. (It's actually an alias to America/New_York, which is the real identifier.)

  • 240 is a time zone offset. It's more commonly written as -04:00 (Invert the sign, divide by 60).

  • The US Eastern Time Zone is comprised of both Eastern Standard Time, which has the offset of -05:00 and Eastern Daylight Time, which has the offset of -04:00.

So it is not at all accurate to say US/Eastern = 240. Please read the timezone tag wiki, especially the section titled "Time Zone != Offset".

Now you did ask for the current offset, which is possible. If you supply a date+time reference, then you can resolve this.

  • For the local time zone of the computer where the javascript code is executing, this is built in with .getTimeZoneOffset() from any instance of a Date object.

  • But if you want it for a specific time zone, then you will need to use one of the libraries I listed here.



回答2:

You can do this using moment.js

moment.tz('timezone name').utcOffset()

Although this involves using moment-timezone.js