Estoy tratando de que aparezca una línea de texto simple si la fecha de hoy es posterior a otra fecha.
Puedo hacer que aparezca en todas las páginas o en ninguna, pero no puedo hacer que se muestre en función de si la fecha de inicio del desafío es anterior o posterior a la fecha de hoy. Creo que podría ser un problema de formato de fecha, pero todo lo que he probado se ha quedado corto.
Aquí está mi código:
Obtener la fecha de hoy
$date_now = new dateTime();Fecha de inicio del desafío
$challengeStartDate = date('dS F Y', strtotime($this->item->start_date)); echo '<!--' . strtotime('1970/1/1 00:00:00 +' . $validity) . '-->';Nueva línea de texto
if ($challengeStartDate > $date_now) echo "New Text";date() devuelve una cadena. Con $challengeStartDate > $date_now es como comparar si una cadena es más grande que la otra (no estoy seguro si su dateTime maneja eso).
Por lo demás, tu enfoque está bien. Solo use marcas de tiempo para comparar. time() te da la hora como una marca de tiempo de Unix:
$now = time(); if ($now > strtotime($this->item->start_date)) { // do your thing }Algo así es más lo que necesitas. Pruébalo.
Tuve el mismo problema hace algún tiempo. Todo lo que necesita hacer es almacenar su hora local en una base de datos para que se guarde estáticamente. ¡Porque en su ejemplo, tanto $challengeStartDate como $date_now cambiarán y se actualizarán simultáneamente y siempre obtendrá la hora actual de la PC! Intente almacenarlo en una tabla o no sé, tal vez las sesiones también ayuden.