【问题标题】:Can I test for daylight saving time (DST) using PHP date()?我可以使用 PHP date() 测试夏令时 (DST) 吗?
【发布时间】:2012-06-17 10:01:57
【问题描述】:

我正在查看 PHP date() 文档,并认为 'I' 会告诉我提供的日期是否在 DST 中。所以我期待以下内容:

$d = strtotime('2012-07-01 12:30:00, Europe/London'); // this is in DST
$bool = date('I',$d); // 1

但得到了这个:

$bool = date('I',$d); // 0

显然我读错了文档。我知道我可以使用dateTimeZone() 转换来做到这一点,但这不是date() 的功能吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    当您执行strtotime 时,您会得到一个整数。您丢失了时区、夏令时等的所有信息,您只得到一个整数。见http://php.net/manual/en/function.strtotime.php

    如果您想使用此类信息,您应该使用 DateTime 类和函数:http://php.net/manual/en/class.datetime.php

    您可以,但我认为您最好使用DateTime,将当前时区设置为您希望获取信息的任何位置:

    date_default_timezone_set('UTC');
    

    (来自date()手册,示例1:http://www.php.net/manual/en/function.date.php

    【讨论】:

    • 你是对的,date_default_timezone_set('Europe/London'); 然后date('I'); 按预期工作。
    猜你喜欢
    • 2020-09-12
    • 2011-12-18
    • 2015-06-07
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多