在我的脚本(PHP)中,我使用tz数据库标签在我的数据库中的每个位置:http://en.wikipedia.org/wiki/Tz_database
我输入了来自世界各地的一系列地方(国家、省、州、城市等),对于每个地方,我发现很难知道要使用IANA时区数据库中的哪个标签。
在维基百科上搜索位置给了我时间偏移量(UTC+n)和时区缩写(EST等),但都不能帮助我知道在tz数据库中使用哪个条目。
例如:据我所知,华盛顿特区用的是"America/New_york"。
达拉斯,德克萨斯州使用'America/Chicago'(除非我弄错了!)
有一个非洲小国,它的首都和最大城市都没有出现在tz数据库中。使用哪个tz项?
必须在某个地方有一个数据库,或者一个资源,它清楚地将地球上的每个位置(国家、州、省、市等)链接到tz数据库中的特定条目。我在哪里可以找到它?
结合谷歌地图API工作良好,例如使用下面的API从地址获取位置。地址是"Mountain View, CA, US"
https://maps.googleapis.com/maps/api/geocode/json?address=Mountain +, +, + US&关键= YOUR_API_KEY
这个URL返回JSON像这样
{
"results" : [
{
"address_components" : [
{
"long_name" : "Mountain View",
"short_name" : "Mountain View",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Santa Clara County",
"short_name" : "Santa Clara County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "California",
"short_name" : "CA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "94043",
"short_name" : "94043",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Mountain View, CA 94043, USA",
"geometry" : {
"location" : {
"lat" : 37.4224764,
"lng" : -122.0842499
},
"location_type" : "GEOMETRIC_CENTER",
"viewport" : {
"northeast" : {
"lat" : 37.4238253802915,
"lng" : -122.0829009197085
},
"southwest" : {
"lat" : 37.4211274197085,
"lng" : -122.0855988802915
}
}
},
"place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
,你可以从JSON中提取位置,并调用位置到时区API。
API调用示例:
https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510×tamp=1331161200&key=YOUR_API_KEY
返回如下JSON
{
"dstOffset" : 0,
"rawOffset" : -28800,
"status" : "OK",
"timeZoneId" : "America/Los_Angeles",
"timeZoneName" : "Pacific Standard Time"
}
您可以考虑的一种方法是查找相关位置的纬度和经度。
然后您可以使用这里描述的方法之一查找这些坐标的适用时区。
目前为止我找到的最好的是:
http://twiki.org/cgi-bin/xtra/tzdatepick.html但它只有城市。
。它列出了巴黎,但没有列出法国。如果整个国家都包含在一个时区内(例如,法国的任何城市都将被列在欧洲/巴黎之下),那么我想知道它。
没有爱达荷州的列表(分为两个区域),也没有爱达荷州莫斯科的列表。
对于美国,我使用以下来源:http://en.wikipedia.org/wiki/List_of_U.S._states_by_time_zone但是任何一个州和城市都需要大量的猜测。
这个列表几乎是可用的,但这是目前为止我得到的最好的:
http://en.wikipedia.org/wiki/List_of_tz_database_time_zonesMocow,爱达荷州?
印第安纳州的韦恩堡?
当我们个人不知道上述地点时,很难从上面的列表中判断。