2011-06-20 67 views
7

私は2日がPHP日付範囲チェック

[contract_start_date] => 2011-10-20 [contract_end_date] => 2011-10-29 

範囲を持っていると私は以下の日付が指定された日付が

2011-05-05 and 2011-10-10 

上の日付範囲の範囲内にあるかどうかを確認したくなければならないのいずれかの方法は契約の範囲を超えて

これはPHPのための機能はありますか?

+1

ck?日付が指定された範囲にある場合?](http://stackoverflow.com/questions/976669/how-to-check-if-a-date-is-in-a-given-range) – lonesomeday

+1

範囲内で2つの日付がチェックされる – WilfredMifsud

+2

だから、ああ、チェックを2回するのですか? – lonesomeday

答えて

9

を参照してください:: http://php.net/manual/en/datetime.diff.php

$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 
1
$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 
} 
1

をこれは、あなたが探している正確に何を与える必要があります:

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"; 
} 
1

年と月、日で日付差を取得するためのコードの下に検索:

<?php 
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<br />'; 
echo datediff('2011-06-1','2010-8-30','m') . ' Months<br />'; 
echo datediff('2011-06-1','2010-8-30','y') . ' Years<br />'; 
?>