如何检查日期是否在给定范围内?
2022-08-30 07:56:16
如果您有 和 ,如何检查用户给出的日期是否在该范围内?$start_date
$end_date
例如:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
目前,日期是字符串,将它们转换为时间戳整数会有帮助吗?
如果您有 和 ,如何检查用户给出的日期是否在该范围内?$start_date
$end_date
例如:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
目前,日期是字符串,将它们转换为时间戳整数会有帮助吗?
将它们转换为时间戳是正确的方式,使用strtotime,例如
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
check_in_range($start_date, $end_date, $date_from_user);
function check_in_range($start_date, $end_date, $date_from_user)
{
// Convert to timestamp
$start_ts = strtotime($start_date);
$end_ts = strtotime($end_date);
$user_ts = strtotime($date_from_user);
// Check that user date is between start & end
return (($user_ts >= $start_ts) && ($user_ts <= $end_ts));
}
如果您使用的是 PHP 5.3+,请使用 DateTime 类。更易于使用,功能更好。
DateTime内部支持时区,其他解决方案由您来处理。
<?php
/**
* @param DateTime $date Date that is to be checked if it falls between $startDate and $endDate
* @param DateTime $startDate Date should be after this date to return true
* @param DateTime $endDate Date should be before this date to return true
* return bool
*/
function isDateBetweenDates(DateTime $date, DateTime $startDate, DateTime $endDate) {
return $date > $startDate && $date < $endDate;
}
$fromUser = new DateTime("2012-03-01");
$startDate = new DateTime("2012-02-01 00:00:00");
$endDate = new DateTime("2012-04-30 23:59:59");
echo isDateBetweenDates($fromUser, $startDate, $endDate);