Php中的夏令时计算

时间:2016-04-12 10:53:30

标签: php datetime dst

在我的应用程序中,我在mysql中使用varchar字段365天,特别是格式,即' 0000-04-12' (4月12日)。现在我有一个功能,应该检查来自田地的特定日期是否属于加拿大卡尔加里的夏令时区,范围从 3月的第二个星期日下午2:00 2:00在11月的第一个星期日。并相应地返回true或false。

<?php 
/*
 @param $time form Database e.g. 0000-04-12
*/
function isDaylightSaving($time){
    // to replace 0000 in start with current year
    $today = substr_replace($time,date('Y'),0,4);
    $date = new DateTime($today);
    $week = $date->format('W');

    // TO DO 
    // find date falls between 2:00 pm Second Sunday of March to 2:00 pm First Sunday of November.

    return ;
}

?>

现在它返回特定年份的一周,但我需要检查一个月的月份来执行特定的逻辑,这是我无法得到的。谢谢。

2 个答案:

答案 0 :(得分:-1)

试试这个:

{{1}}

strtotime()是一个很棒的功能。

答案 1 :(得分:-1)

@Ezenhis给出的例子听起来不错,但缺少一些元素。 扩展它:

$low = new DateTime('@'.strtotime('second sunday of march'));
$high = new DateTime('@'.strtotime('first sunday of november'));
if($date > $low && $date < $high) {
    // we're good
}

您不应该比较日期函数中的字符串。从PHP 5.0开始,使用DateTime也是处理PHP中日期/时间的更好方法。