2013-12-20 36 views
5

我需要给定一个时区一个JavaScript函数,返回当前UTC偏移。获得UTC从区偏移的Javascript

例如,theFuncIneed( 'US /东部') - > 240

任何想法?

感谢

+0

创建的时区名称作为属性和对象抵消值。请注意,时区名称没有标准,它们会不时更改,并且有重复(例如EST)。 – RobG

+0

看看moment.js,它有一个'zone()'方法。 – Barmar

+0

@RobG - “美国/东部”是一个有效的[IANA时区](http://iana.org/time-zones)标识符。你可以在列表的底部找到它[这里](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。 –

回答

4

一般,这是不可能的。

  • US/Eastern时区的标识符。 (它实际上是一个别名America/New_York,这是真实标识符。)

  • 240是一个时区偏移。它通常写为-04:00(反转符号,除以60)。

  • 美国东部时区包含东部标准时间,其偏移量为-05:00,东部夏令时间偏移量为-04:00

因此,它是不是在所有准确的说US/Eastern = 240。请仔细阅读timezone tag wiki,尤其是标题为“时区!=偏移”。

现在您确实要求当前偏移量,其中可能。如果您提供日期+时间参考,则可以解决此问题。

  • 对于其中的JavaScript代码执行的计算机的当地时区,这是从对象Date的任何实例内置有.getTimeZoneOffset()

  • 但是,如果你想要它为特定时区,那么你将需要使用one of the libraries I listed here

+0

ECMA-262将[时区偏移量](http://ecma-international.org/ecma-262/5.1/#sec-15.9.5.26)定义为以分钟表示的“UTC - localTime”。所以我认为在javascript论坛中编写“+ 240”是合理的,否则可能会使用“-04:00”。 – RobG

+0

是的,作为一个数字,240是可以接受的。 –

+1

'.getTimeZoneOffset()'应该是'.getTimezoneOffset()',不带大写字母Z –

1

你可以做到这一点使用moment.js

moment.tz( '时区名')。UTCOFFSET()