2

在文本框中给出州和国家时获取时区

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

输入会像

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

结果应该是

美国/纽约

或者

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

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

4

3 回答 3

3

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

您可以将每个州的猜测拼凑在一起(例如,通过使用该列表),但如果这是为了弄清楚用户的时区,那么您可能会有更好的运气,只需将客户端时钟与服务器的 UTC 时间进行比较并根据国家/地区进行估计.

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

于 2013-11-05T06:48:21.547 回答
2

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

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

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

var date = new Date(); 

返回12:38:05 GMT+0530(印度标准时间)

要选择括号内的时间,请使用

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

返回印度标准时间

检查这个JSFiddle

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

于 2013-11-05T06:47:37.363 回答
1

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

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

这是根据 skylarsutton 在上一篇文章中对类似问题的回应(但不特定于 js 或查询)...

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

于 2013-11-05T06:48:56.080 回答