2011-01-03 10 views
1

Was für eine gute Möglichkeit wäre, zu prüfen, ob Punkt zwischen start und extra ist.php - überprüfen Unterschied zu Terminen + zusätzliche Zeit

point = 2010-06-20 
start = 2010-06-17 
extra = start + "1 week" 

Alle Ideen würden es zu schätzen wissen.

+1

sollte nicht 'tun extra' werden' start + ein week'? ansonsten überprüft, ob 'Point' ist, bevor' extra' völlig sinnlos ist. – oezi

+0

@oezi: das ist richtig! – MikeCooper

Antwort

1

einen Blick auf nehmen - ein dann einfach vergleichen die resultierenden Zeitstempel:

$start = strtotime('2010-06-20'); 
$point = strtotime('2010-06-17'); 
$extra = strtotime('+1 week', $start); 

if($start < $point && $extra > $point){ 
    // it's bewtween... 
} 
0

versuchen diese

$start_timestamp = strtotime('2010-05-17'); 
$end_timestamp = strtotime(date("Y-m-d", $start_timestamp) . " +1 week"); 
$point_timestamp = strtotime('2010-16-20'); 

if ($point_timestamp < $end_timestamp && $point_timestamp > $point_timestamp) { 
// Do your work 
} 
1

Benötigt PHP 5,3

$period = new DatePeriod(
    new DateTime('2010-06-17'), 
    DateInterval::createFromDateString('+1 day'), 
    new DateTime('2010-06-17 +1 week') 
); 

if (in_array(new DateTime('2010-06-20'), iterator_to_array($period))) { 
    // date is in range 
} 

Handbuch http://de2.php.net/manual/en/dateperiod.construct.php


Ich würde wahrscheinlich verlängern die DatePeriod Klasse ein contains Methoden haben:

class DateRange extends DatePeriod 
{ 
    public function contains(DateTime $dateTime) 
    { 
     return in_array($dateTime, iterator_to_array($this)); 
    } 
} 

dann können Sie

$period = new DateRange(
    new DateTime('2010-06-17'), 
    DateInterval::createFromDateString('+1 day'), 
    new DateTime('2010-06-17 +1 week') 
); 
if ($period->contains(new DateTime('2011-06-20'))) { 
    // date is in range 
}