php - проверить разницу по датам + дополнительное время - PullRequest
1 голос
/ 03 января 2011

Какой хороший способ проверить, находится ли точка между start и extra.

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

Любые идеи будут оценены.

Ответы [ 3 ]

1 голос
/ 03 января 2011

посмотрите на strtotime - а затем просто сравните полученные метки времени:

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

if($start < $point && $extra > $point){
  // it's bewtween...
}
1 голос
/ 03 января 2011

Требуется 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
}

Вручную http://de2.php.net/manual/en/dateperiod.construct.php


Я бы, вероятно, расширил класс DatePeriod, добавив contains методы:

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

тогда можно сделать

$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
}
0 голосов
/ 03 января 2011

попробуйте

$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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...