特别是,我想写一个PHP(-MySQL)脚本,它可以找到世界上某个特定城市的当前本地日期和时间。它必须尊重DST的变化。首先,我想找到世界上所有首都的当前日期和时间。不幸的是,我无法弄清楚如何使用Oslon数据库来完成任务。有人可以帮助我吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
TL; DR:使用PECL的timezonedb和内置DateTimeZone
。如果您希望真正最新的时区更新,请参阅Upgrading Olson tz database natively implemented in PHP。
PHP DateTimeZone
class中使用的内置时区数据库基于Olson。可能是旧的版本,这对于不断变化的时区信息很敏感。
官方PHP使用最新时区数据的方式是安装和升级PECL的timezonedb
:
pecl upgrade timezonedb
此软件包通常会更新到IANA(读取Olson)时区数据库的最新版本,对于大多数情况来说,该数据库应该足够好了。
如果您希望生活在时区数据库的最前沿,即想要查看Olson时区数据库官方版本中尚未包含的时区更新,您可以使用当前维护者的github等来源( https://github.com/eggert/tz)获取最新的时区数据。例如,截至2017年2月,蒙古在2017年取消DST未包含在最新版本(2016j
)中,但它包含在上面的github链接中。
但要在PHP中使用它,您需要重新编译timezonedb
扩展名。请参阅Upgrading Olson tz database natively implemented in PHP和https://github.com/derickr/timelib,了解从前沿数据中重新编译/更新PECL的timezonedb的方法(甚至可能包括您自己的自定义补丁)。它包含生成timezonedb.h
的代码,然后用于将最新数据编译到timezonedb
PECL包中。