在我的应用程序中,我在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 ;
}
?>
现在它返回特定年份的一周,但我需要检查一个月的月份来执行特定的逻辑,这是我无法得到的。谢谢。
答案 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中日期/时间的更好方法。