最佳答案
英文原文
$datetime1 = new DateTime('2011-10-20');
$datetime2 = new DateTime('2011-10-29');
//PHP 5.3.0
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
//PHP 5.2.2
var_dump($datetime1 < $datetime2);
$datetime3 = new DateTime('2011-05-05');
$datetime4 = new DateTime('2011-10-10');
if ($datetime3 > $datetime1 && $datetime2 > $datetime1 && $datetime3 < $datetime2 && $datetime2 < $datetime2) {
//valid range
}//end if
中文翻译
$ datetime1 = new DateTime('2011-10-20');
$ datetime2 = new DateTime('2011-10-29');
// PHP 5.3.0
$ interval = $ datetime1-&gt; diff($ datetime2);
echo $ interval-&gt;格式('%R%a days');
// PHP 5.2.2
var_dump($ datetime1&lt; $ datetime2);
$ datetime3 = new DateTime('2011-05-05');
$ datetime4 = new DateTime('2011-10-10');
if($ datetime3&gt; $ datetime1&amp;&amp; $ datetime2&gt; $ datetime1&amp;&amp; $ datetime3&lt; $ datetime2&amp;&amp; $ datetime2&lt; $ datetime2){
//有效范围
}//万一
$datetime1 = new DateTime('2011-10-20');
$datetime2 = new DateTime('2011-10-29');
//PHP 5.3.0
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
//PHP 5.2.2
var_dump($datetime1 < $datetime2);
$datetime3 = new DateTime('2011-05-05');
$datetime4 = new DateTime('2011-10-10');
if ($datetime3 > $datetime1 && $datetime2 > $datetime1 && $datetime3 < $datetime2 && $datetime2 < $datetime2) {
//valid range
}//end if
$ datetime1 = new DateTime('2011-10-20');
$ datetime2 = new DateTime('2011-10-29');
// PHP 5.3.0
$ interval = $ datetime1-&gt; diff($ datetime2);
echo $ interval-&gt;格式('%R%a days');
// PHP 5.2.2
var_dump($ datetime1&lt; $ datetime2);
$ datetime3 = new DateTime('2011-05-05');
$ datetime4 = new DateTime('2011-10-10');
if($ datetime3&gt; $ datetime1&amp;&amp; $ datetime2&gt; $ datetime1&amp;&amp; $ datetime3&lt; $ datetime2&amp;&amp; $ datetime2&lt; $ datetime2){
//有效范围
}//万一
参考答案2
$start = strtorime($contract_start_date);
$end = strtotime($contract_end_date);
$required_start = strtotime("2011-05-05");
$required_end = strtotime("2011-10-10");
if ($end > $required_end or $end < $required_start)
{
//out of range
}
if ($start < $required_start or $start > $required_end)
{
//out of range
}
参考答案3
This should give you exactly what you're looking for:
define(CONTRACT_START, "2011-10-20");
define(CONTRACT_END, "2011-10-29");
function checkDateRange($dateArray)
{
foreach($dateArray as $dateStr)
{
$curDate = strtotime($dateStr);
if($curDate < strtotime(CONTRACT_START) || $curDate > strtotime(CONTRACT_END))
{
return false;
}
}
return true;
}
$dates = array( 0 => "2011-10-02", 1 => "2011-10-25");
if(checkDateRange($dates))
{
echo "Dates are within range";
}
else
{
echo "Dates are NOT within range";
}
参考答案4
Find below code to get date difference in days, month and year:
function datediff($date1,$date2,$format='d'){
$difference = abs(strtotime($date2) - strtotime($date1));
switch (strtolower($format)){
case 'd':
$days = round((($difference/60)/60)/24,0);
break;
case 'm':
$days = round(((($difference/60)/60)/24)/30,0);
break;
case 'y':
$days = round(((($difference/60)/60)/24)/365,0);
break;
}
return $days;
}
//Example
echo datediff('2011-06-1','2010-8-30','D') . ' Days
';
echo datediff('2011-06-1','2010-8-30','m') . ' Months
';
echo datediff('2011-06-1','2010-8-30','y') . ' Years
';
?>