PHP Проверка текущей даты до или после установленной даты

Im потянув дату из базы данных, которая отформатирована как dd-mm-YYYY … Что я хочу сделать, это проверить текущую дату, если текущая дата предшествует дате, поступающей из базы данных, тогда ей нужно распечатать дату базы данных , если после этого ему нужно напечатать «идти вперед».

Приветствия.

Related of "PHP Проверка текущей даты до или после установленной даты"

if( strtotime($database_date) > strtotime('now') ) { ... 

Вот список всех возможных проверок для …

«Прошла ли дата?»

Возможные способы получения значения

 $date = strtotime( $date ); $date > date( "U" ) $date > mktime( 0, 0, 0 ) $date > strtotime( 'now' ) $date > time() $date > abs( intval( $_SERVER['REQUEST_TIME'] ) ) 

Результат теста производительности (PHP 5.4.7)

Я выполнил некоторые тесты производительности на 1000 000 итераций и вычислил среднее значение – Упорядоченный самый быстрый до самого медленного.

 +---------------------+---------------+ | method | time | +---------------------+---------------+ | time() | 0.0000006732 | | $_SERVER | 0.0000009131 | | date("U") | 0.0000028951 | | mktime(0,0,0) | 0.000003906 | | strtotime("now") | 0.0000045032 | | new DateTime("now") | 0.0000053365 | +---------------------+---------------+ 

ProTip: вы можете легко запомнить, что быстрее, просто глядя на длину функции. Чем дольше, тем медленнее функция.

Настройка тестирования производительности

Следующий цикл был запущен для каждой из вышеупомянутых возможностей. Я преобразовал значения в ненаучную нотацию для удобства чтения.

 $loops = 1000000; $start = microtime( true ); for ( $i = 0; $i < $loops; $i++ ) date( "U" ); printf( '| date("U") | %s |'."\n", rtrim( sprintf( '%.10F', ( microtime( true ) - $start ) / $loops ), '0' ) ); 

Вывод

time() прежнему кажется самым быстрым.

Если вы ищете общий способ сделать это через MySQL, вы можете просто использовать SELECT и добавить к нему WHERE .

Это позволит захватить все поля для всех строк, где дата, хранящаяся в поле «дата», перед «сейчас».

 SELECT * FROM table WHERE UNIX_TIMESTAMP(`date`) < UNIX_TIMESTAMP() 

Лично я нашел этот метод более нежным для новичков в MySQL, так как он использует стандартную инструкцию SELECT с WHERE для получения результатов. Очевидно, вы могли бы захватить только соответствующие поля, если хотите, перечислив их вместо использования подстановочного знака (*).

Я хотел установить конкретную дату, поэтому использовал это, чтобы делать вещи до 2 декабря 2013 года

 if(mktime(0,0,0,12,2,2013) > strtotime('now')) { // do stuff } 

0,0,0 – полночь, 12 – месяц, 2 – день, а 2013 – год.

if (strtotime($date) > mktime(0,0,0)) должен выполнить эту работу.

Используйте strtotime для преобразования любой даты в timestamp unix и сравнения.

 if(strtotime($row['database_date']) > strtotime('now')) echo $row['database_date']; else echo date("dmY"); 

Не нужно проверять часы, потому что, если они будут в тот же день, он будет показывать ту же дату в любом случае …

MySQL-единственное решение будет примерно таким:

 SELECT IF (UNIX_TIMESTAMP(`field`) > UNIX_TIMESTAMP(), `field`,'GO AHEAD') as `yourdate` FROM `table` 
 if(strtotime($db_date) > time()) { echo $db_date; } else { echo 'go ahead'; } 

Я использовал это, и он служил цели:

 if($date < date("Ymd") ) { echo "Date is in the past";} 

BR