进入州和国家时获得时区(在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或查询)…
我需要一个城市到时区的映射列表 – 获得它的最佳方式?