PHP Проверить, если текущее время раньше указанного времени - PullRequest
30 голосов
/ 12 декабря 2011

Мне нужно проверить в PHP, является ли текущее время до 14:00 в этот день.

Я сделал это с strtotime на датах раньше, однако на этот раз это только со временем, поэтому, очевидно, в0,00 каждый день время будет сбрасываться, а логическое значение будет сбрасываться с false до true.

if (current_time < 2pm) {
   // do this
}

Ответы [ 9 ]

69 голосов
/ 12 декабря 2011
if (date('H') < 14) {
   $pre2pm = true;
}

Для получения дополнительной информации о функции даты, пожалуйста, см. Руководство по PHP .Я использовал следующий форматер времени:

H = 24-часовой формат часа (от 00 до 23)

23 голосов
/ 12 декабря 2011

Попробуйте:

if(date("Hi") < "1400") {
}

См .: http://php.net/manual/en/function.date.php

H   24-hour format of an hour with leading zeros    00 through 23
i   Minutes with leading zeros                      00 to 59
13 голосов
/ 12 декабря 2011

Вы можете просто пройти во времени

if (time() < strtotime('2 pm')) {
   //not yet 2 pm
}

Или передайте дату явно

if (time() < strtotime('2 pm ' . date('d-m-Y'))) {
   //not yet 2 pm
}
4 голосов
/ 12 декабря 2011

Используйте 24-часовое время, чтобы обойти проблему следующим образом:

$time = 1400;
$current_time = (int) date('Hi');
if($current_time < $time) {
    // do stuff
}

Таким образом, 2 вечера равняется 14:00 в течение 24 часов. Если мы удалим двоеточие из времени, мы можем оценить его как целое число в нашем сравнении.

Для получения дополнительной информации о функции даты, пожалуйста, см. Руководство по PHP . Я использовал следующие форматеры времени:

H = 24-часовой формат часа (от 00 до 23)

i = минуты с ведущими нулями (от 00 до 59)

1 голос
/ 06 января 2016

Если вы хотите проверить, не наступило ли время до 14:30, вы можете попробовать следующий сегмент кода.

if (date('H') < 14.30) {
   $pre2pm = true;   
}else{
   $pre2pm = false;
}
1 голос
/ 12 декабря 2011

Вы не сказали нам, какую версию PHP вы используете, хотя, предполагая, что это PHP 5.2.2+, вы можете сделать это следующим образом:

$now = new DateTime();
$twoPm = new DateTime();
$twoPm->setTime(14,0); // 2:00 PM

, затем просто спросите:

if ( $now < $twoPm ){ // such comparison exists in PHP >= 5.2.2
    // do this
}

в противном случае , если вы используете одну из более старых версий (скажем, 5.0), это должно помочь (и намного проще):

$now = time();
$twoPm = mktime(14); // first argument is HOUR

if ( $now < $twoPm ){
    // do this
}
0 голосов
/ 21 октября 2015

Используйте функции time(), date() и strtotime():

if(time() > strtotime(date('Y-m-d').' 14:00') {
    //...
}
0 голосов
/ 01 февраля 2014

Эта функция проверяет, находится ли время между часами в EST, принимая 2 параметра, массивы с часами и часами / часами ...

    /**
     * Check if between hours array(12,'pm'), array(2,'pm')
     */
    function is_between_hours($h1 = array(), $h2 = array())
    {
        date_default_timezone_set('US/Eastern');
        $est_hour = date('H');

        $h1 = ($h1[1] == 'am') ? $h1[0] : $h1[0]+12;
        $h1 = ($h1 === 24) ? 12 : $h1;

        $h2 = ($h2[1] == 'am') ? $h2[0] : $h2[0]+12;
        $h2 = ($h2 === 24) ? 12 : $h2;

        if ( $est_hour >= $h1 && $est_hour <= ($h2-1) )
            return true;

        return false;
    }
0 голосов
/ 12 декабря 2011

Попробуйте с

if( time() < mktime(14, 0, 0, date("n"), date("j"), date("Y")) ) {

// do this

}
...