php - 如何查找给定时区的 DST 开始和结束日期?

标签 php date timestamp dst

Clock changes in "America/New York":
When local daylight time was about to reach
Sunday, 3 November 2013, 02:00:00 clocks were turned backward 1 hour to
Sunday, 3 November 2013, 01:00:00 local standard time instead

Clock changes in "Europe/Berlin":
When local daylight time was about to reach
Sunday, 27 October 2013, 03:00:00 clocks were turned backward 1 hour to
Sunday, 27 October 2013, 02:00:00 local standard time instead

我如何使用 PHP 获取这些日期?
例如:如何在没有 google 的情况下获取 2014 年柏林的日期“2013 年 10 月 27 日,星期日,02:00:00”;)

如果我有一个位于那个小时内的 unixtimestamp,它会指向第一个小时还是最后一个小时?

最佳答案

我认为getTransitions是你所追求的:

$timezone = new DateTimeZone("Europe/London");
$transitions = $timezone->getTransitions();

我承认,这看起来有点碍眼,如果您对为什么数组中返回多个条目感到困惑,那是因为确切的日期不同,因为在大多数地区它是基于日期的一个月中的星期几(例如“十月的最后一个星期日”)而不是特定日期。对于上面的内容,如果您只想要即将到来的转换,您可以添加 timestamp_being 参数:

$timezone = new DateTimeZone("Europe/London");
$transitions = $timezone->getTransitions(time());

关于php - 如何查找给定时区的 DST 开始和结束日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19969436/

相关文章:

c - 在 c 中获取最大变量大小为 32 位的时间戳(以微秒为单位)

php - Foreach 行为怪异

javascript - 在我的插件中添加短代码 WordPress

java - 日期解析不会因格式无效而失败

sql - pg_query 喜欢时间戳

java - SimpleDateFormat 中是否有自 1970 年以来的毫秒数字母?

PHP函数每次将变量递增1

php - 如何使用 PHP 从 HTML 代码中删除多余的 <br/> 标签?

php - 比较mysql中varchar中存储的日期

ios - NSTimeInterval 到 unix 时间戳