如何使用mktime"我" (夏季期权)?

时间:2016-08-05 15:13:35

标签: php date php-7 mktime

嘿,我想编写一个脚本,如果在夏季给定日期,则返回true。所以我在php documentation中找到了日期(" stuff" mktime)。并且有一个参数字符串列表。它说:"I (capital i) Whether or not the date is in daylight saving time"。下面的一些行我找到了这个例子:

echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

这就是我在剧本中写这个的原因:

function summertime(string $date) : bool {
    $pieces = explode('-', $date);
    $year = (int) $pieces[0];
    $month = (int) $pieces[1];
    $day = (int) $pieces[2];

    return date("I", mktime(0, 0, 0, $month, $day, $year));
}

echo summertime("1981-07-07");

无论我输入什么日期,它都会返回false / 0什么永远......我无法找到差异或错误...... FYI:我使用的是php 7.0

1 个答案:

答案 0 :(得分:1)

正如Markus Laire的评论中所述,您可能需要正确设置时区。我还建议使用DateTime类。以下示例显示了在创建新日期时如何设置特定时区:

示例1:

$tz = new DateTimeZone('Europe/Berlin');
$date = new DateTime('1981-07-07', $tz);
echo $date->format('I');
// outputs '1'

示例2:

$tz = new DateTimeZone('Europe/Berlin');
$date = new DateTime('1981-01-01', $tz);
echo $date->format('I');
// outputs '0'