Проверьте, существует ли день между временными метками - PullRequest
2 голосов
/ 08 февраля 2012

Я пытаюсь выяснить, существует ли дата между двумя временными метками Unix независимо от года.Например, допустим, у меня есть дата 12 декабря, но она не содержит год.Как мне проверить, существует ли 12 декабря между временными метками 1353369600 и 1358640000 (первая временная метка равна 20 ноября 2012 года; вторая - 20 января 2013 года).Я программирую приложение на PHP, однако, если вы знаете, как сделать это на другом языке, пожалуйста, напишите свои мысли, чтобы я мог попытаться проработать логику.

Заранее спасибо

Обновление: вот ответ!Используйте strtotime и установите для второго параметра начальную временную метку:)

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Просто используйте strtotime, чтобы превратить строку в отметку времени, а затем сравнить. Если строка не содержит год, по умолчанию используется текущий год.

$ts = strtotime("December 12th");
if ($ts >= 1353369600 && $ts <= 1358640000 ) {//....}
0 голосов
/ 08 февраля 2012

Вы можете проверять каждый год между временными метками и видеть, есть ли желаемый день между ними.

function inBetween($day, $month, $from, $to)
{
    $from_year = date('Y', $from);
    $to_year = date('Y', $to);

    if($from_year == $to_year)
    {
        $time = mktime(12,0,0,$month,$day, $from_year);

        return $time > $from && $time < $to;
    }
    elseif($from_year < $to_year)
    {
        for($i=$from_year;$i<=$to_year;$i++)
        {
            $time = mktime(12,0,0,$month,$day, $i);
            if($time > $from && $time < $to) return TRUE;
        }
        return FALSE;
    }
}

var_dump(inBetween(12, 12, 1353369600, 1358640000));
...