PHP Проверить, если текущее время раньше указанного времени

nth-of-type работает в соответствии с индексом того же типа элемента, но nth-child работает только в соответствии с индексом независимо от того, какой тип элементов сиблингов.

Например

<div class="one">...</div>
<div class="two">...</div>
<div class="three">...</div>
<div class="four">...</div>
<div class="five">...</div>
<div class="rest">...</div>
<div class="rest">...</div>
<div class="rest">...</div>
<div class="rest">...</div>
<div class="rest">...</div>

Предположим, что в выше html мы хотим скрыть все элементы, имеющие класс отдыха.

В этом случае nth-child и nth-of-type будут работать точно так же, как и все элементы одного типа, <div>, поэтому css должен быть

.rest:nth-child(6), .rest:nth-child(7), .rest:nth-child(8), .rest:nth-child(9), .rest:nth-child(10){
    display:none;
}

OR

.rest:nth-of-type(6), .rest:nth-of-type(7), .rest:nth-of-type(8), .rest:nth-of-type(9), .rest:nth-of-type(10){
    display:none;
}

Теперь вам должно быть интересно узнать, в чем разница между nth-child и nth-of-type, так что это разница

Предположим, что html is

<div class="one">...</div>
<div class="two">...</div>
<div class="three">...</div>
<div class="four">...</div>
<div class="five">...</div>
<p class="rest">...</p>
<p class="rest">...</p>
<p class="rest">...</p>
<p class="rest">...</p>
<p class="rest">...</p>

В приведенном выше html тип элемента .rest отличается от других .rest - это абзацы, а другие - div, поэтому в этом случае if вы используете nth-child, вы должны писать так

.rest:nth-child(6), .rest:nth-child(7), .rest:nth-child(8), .rest:nth-child(9), .rest:nth-child(10){
    display:none;
}

, но если вы используете nss-тип css, это может быть

.rest:nth-of-type(1), .rest:nth-of-type(2), .rest:nth-of-type(3), .rest:nth-of-type(4), .rest:nth-of-type(5){
    display:none;
}

Как тип Элементом .rest является <p>, поэтому здесь nth-of-type обнаруживает тип .rest, а затем он накладывает css на 1-й, 2-й, 3-й, 4-й, 5-й элементы <p>.

29
задан Willi Mentzel 7 August 2017 в 15:56
поделиться

9 ответов

if (date('H') < 14) {
   $pre2pm = true;
}

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

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

69
ответ дан Willi Mentzel 7 August 2017 в 15:56
поделиться

Попробуйте:

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
23
ответ дан Merlyn Morgan-Graham 7 August 2017 в 15:56
поделиться

Вы можете просто передать время

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

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

if (time() < strtotime('2 pm ' . date('d-m-Y'))) {
   //not yet 2 pm
}
13
ответ дан Merlyn Morgan-Graham 7 August 2017 в 15:56
поделиться

Вы не сказали нам, какую версию 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
}
1
ответ дан Jovan Perovic 7 August 2017 в 15:56
поделиться

Используйте 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)

4
ответ дан Treffynnon 7 August 2017 в 15:56
поделиться

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

if (date('H') < 14.30) {
   $pre2pm = true;   
}else{
   $pre2pm = false;
}
1
ответ дан Udeshika Sewwandi 7 August 2017 в 15:56
поделиться

Попробуйте с

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

// do this

}
0
ответ дан Repox 7 August 2017 в 15:56
поделиться

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

    /**
     * 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
ответ дан FueledPublishing 7 August 2017 в 15:56
поделиться

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

if(time() > strtotime(date('Y-m-d').' 14:00') {
    //...
}
0
ответ дан Aryeh Armon 7 August 2017 в 15:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: