2010-11-16 108 views
1

我在我的项目中使用PHP的日期函数,并且想要检查天气给定的日期时间位于date-time.ie的给定范围之间,例如如果当前日期时间是2010-11-16 12:25: 00 PM,并且要检查时间是在2010-11-16 09:00:00 AM到06:00:00 PM之间。在上述情况下它是真实的,如果时间不在该范围之间,它应该返回错误。 是否有任何inbuild PHP函数来检查这个或我们将不得不写一个新的函数?PHP函数检查给定范围之间的时间?

回答

7

只需使用strtotime到两次转换成UNIX时间戳:

样本函数可能看起来像:

function dateIsBetween($from, $to, $date = 'now') { 
    $date = is_int($date) ? $date : strtotime($date); // convert non timestamps 
    $from = is_int($from) ? $from : strtotime($from); // .. 
    $to = is_int($to) ? $to : strtotime($to);   // .. 
    return ($date > $from) && ($date < $to); // extra parens for clarity 
} 
+1

1但我希望逻辑使用> =和<=,使得范围是包括性的 – 2010-11-16 07:53:59

+0

嘿感谢@Hamish!它工作得很好... – 2010-11-16 08:23:40

6

功能检查日期/时间的范围内:

function check_date_is_within_range($start_date, $end_date, $todays_date) 
{ 

    $start_timestamp = strtotime($start_date); 
    $end_timestamp = strtotime($end_date); 
    $today_timestamp = strtotime($todays_date); 

    return (($today_timestamp >= $start_timestamp) && ($today_timestamp <= $end_timestamp)); 

} 

与参数调用函数开始日期/时间,结束日期/时间,今天的日期/时间。以下参数可以查看当前日期/时间是在2012年6月26日上午10点到当天中午之间的功能。

if(check_date_is_within_range('2012-06-26 10:00:00', '2012-06-26 12:00:00', date("Y-m-d G:i:s"))){ 
    echo 'In range'; 
} else { 
    echo 'Not in range'; 
} 
+0

谢谢@Kenneth,我会试试这个,让你知道.. – 2012-06-23 06:53:54