php больше определенного времени - PullRequest
9 голосов
/ 16 июня 2011

Я пытаюсь сделать простую функцию для вывода 2 разных строк текста в зависимости от времени дня.Я хочу сказать, что после 16:00 - доставка на следующий день будет обработана на следующий день.

Я уже написал это:

<?php

   $currentTime = time() + 3600;
   echo date('H:i',$currentTime);                 

?>   

Однако, так как функция даты возвращает строку, яЯ не уверен, как использовать оператор IF, чтобы проверить, больше ли время, чем 16:00.

Ответы [ 9 ]

22 голосов
/ 16 июня 2011

Должен это сделать

if (((int) date('H', $currentTime)) >= 16) {
  // .. do something
}

Поскольку PHP имеет слабый тип, вы можете опустить (int) -кастинг.

В качестве идентификатора: Если вы называете переменную $currentTime,Вы не должны добавлять к нему 1 час, потому что тогда это уже не текущее время, а время в будущем;) В общем

if (date('H') >= 16) { /* .. */ }
5 голосов
/ 16 июня 2011
if ($currentTime > strtotime('16:00:00')) {
    // whatever you have to do here
}
2 голосов
/ 16 июня 2011

Используйте date('H:i:s'), чтобы получить время в строковом формате и сравнить его с "16:00:00".

1 голос
/ 16 января 2013

Возможно, небольшое улучшение, если вы хотите еще большей точности:

if ( (int) date('Hi', $currentTime)  > 1600 ) {
    // .. do something
}
1 голос
/ 16 июня 2011
if(mktime(16, 0, 0) < time()) {
    echo "Next day delivery will be processed the following day.";
} else {
   echo "Will be processed today.";
}
1 голос
/ 16 июня 2011

Сравните временные метки.

if (strtotime($date) < strtotime('16:00'))
0 голосов
/ 27 июня 2018

Вы также можете проверить разницу между двумя датами: -

<?php
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");

var_dump($date1 == $date2);    //bool(false)
var_dump($date1 < $date2);    //bool(true)
var_dump($date1 > $date2);    //bool(false)
?> 
0 голосов
/ 02 июня 2016

Я использовал это для обновления чего-то 3 раза в течение дня ...

$my_time= strtotime('now')-18000;//Now. My servers timezone is 5hrs ahead.
$my_day= strtotime('today')-86400; //today midnight central time.
$my_eve= $my_day +54000; //3pm central

if ($my_time > $my_day + 32400 && $my_time < $my_eve){

echo date('F j, Y, g:i a', $my_day + 32400); //9am

}elseif ($my_time > $my_eve){

echo date('F j, Y, g:i a', $my_eve); //3pm

}else{  

echo date('F j, Y, g:i a', $my_day);} //midnight
0 голосов
/ 16 июня 2011

Попробуйте это

    function checkTime($time1,$time2)
{
  $start = strtotime($time1);
  $end = strtotime($time2);
  if ($start-$end > 0)
    return 1;
  else
   return 0;
}

$currentTime = time() + 3600;
$time1 = date('H:i',$currentTime);
$time2 = '16:00';

if(checkTime($time1,$time2))
   echo "First parameter is greater";
else
   echo "Second parameter is greater";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...