进入州和国家时获得时区(在ics文件中使用的时区)

在文本框中提供州和国家时获取时区

有没有办法用这两个值来获得那个地方的时区?

输入就像

var state = 'New York' ; var country = 'United States'; 

结果应该是

美国/纽约

要么

获取当前浏览器的本地时区?

我需要在ics文件中使用此时区。

这是不可能的,原因很简单,因为很多州跨越一个以上的时区。 请参阅维基百科的列表 。 在美国之外,它可能变得更加复杂; 我相信有些城市跨越多个时区。

您可以拼凑每个状态的猜测(例如,通过使用该列表),但如果这是为了计算用户的时区,您可能会更好的运气只是将客户端时钟与服务器的UTC时间进行比较并根据国家/地区进行估算。

编辑:请注意,也无法向浏览器询问当前时区,并且您无法根据当前时间进行可靠猜测,因为有许多时区现在是同一时间,但DST不同。 您最好的选择是找到所有可能的当前时区,根据用户的位置进行估算(您还必须猜测!),并且只是作为最后的手段。

不,没有预定义的方法存在。

为此,您需要一些外部Web服务。 如果您有兴趣,可以使用维基百科中提供的信息创建自己的API

更新:根据您的评论“ 获取当前浏览器的本地时区

 var date = new Date(); 

返回格林尼治标准时间12:38:05 + 0530(印度标准时间)

选择括号内的时间使用

 date.toTimeString().match(/\(([^)]+)\)/)[1]; 

返回印度标准时间

检查这个JSFiddle

但这不是您所期望的,但是您应该尝试使用JavaScript自动检测时区,并且对于更新版本,请尝试此jsTimezoneDetect

GeoNames提供了一个可以使用的数据转储:

http://download.geonames.org/export/dump/

这是每个skylarsutton在以下上一篇文章中的回答,其中有一个类似的问题(但不是特定于js或查询)…

我需要一个城市到时区的映射列表 – 获得它的最佳方式?