时区原始偏移量

3
在研究时区的过程中,我发现了GeoNames论坛上这篇有趣的帖子: (链接)
rawOffset gives the fixed timezone.
dstOffset gives the civil time offset from GMT on July 1st
gmtOffset gives the civil time offset from GMT on January 1st

例如在南半球的智利 (http://ws.geonames.org/timezone?lat=-33.46912&lng=-70.641997),我们有以下数值:

rawOffset = -4 indicating the timezone
dstOffset = -4
gmtOffset = -3, which means that daylight saving time is in use in January.

例如,在北半球的荷兰地区 (http://ws.geonames.org/timezone?lat=51.589322&lng=4.774491):

rawOffset = 1
dstOffset = 2
gmtOffset = 1, indacting that daylight saving time is in use in July.

这已经不是我第一次看到rawOffset了,这个SO答案(Java语言)也依赖它。
我的目标是利用原始偏移量建立一个时区下拉菜单,显示每组城市的UTC偏移量。现在我列出时间区域的所有转换,并使用非夏令时偏移量,但我上面提到的帖子指出,在南半球这是错误的。

编辑: http://download.oracle.com/javase/1.4.2/docs/api/java/util/TimeZone.html#getRawOffset%28%29

来自GeoNames的Marc告诉我,他们通过使用该Java方法获得原始偏移量。

任何Java专家知道他们是如何做到的吗?或者我可以在哪里浏览getRawOffset()的源代码?


有什么办法可以在PHP中获取原始偏移量吗?


你有没有其他的“原始偏移量”名称? - hakre
你手头有什么工具?从那个问题中完全不清楚。 - Jon
不确定问题是什么,但也许 http://php.net/manual/zh/datetimezone.gettransitions.php 可以在某种程度上为您提供所需内容。 - Gordon
@Gordon:我已经在使用DateTimeZone::getTransitions(),但它只返回一个带有偏移量和另一个布尔字段(isdst)的字段,我不认为我可以从中找出原始偏移量。 - Alix Axel
@hakre:我不这么认为,我知道标准偏移量(又称非夏令时偏移量),夏令时偏移量和原始偏移量... - Alix Axel
@Jon:不知道,所以我才问的!:P 另一个问题是关于Java的,但是答案和GeoNames论坛帖子似乎都表明原始偏移量是正确的方法。 - Alix Axel
1个回答

0

不清楚您为什么需要原始偏移量。

在PHP中,给定时间+位置,您可以实例化一个DateTime对象,然后调用其getOffset()方法来计算当前时区偏移量。遍历不同的位置,这应该是您获取下拉菜单所需的全部内容,不是吗?

请参见http://www.php.net/manual/en/datetime.getoffset.php


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接