PHP - PHP - Operaciones con horas

 
Vista:
sin imagen de perfil

PHP - Operaciones con horas

Publicado por Ensidia (1 intervención) el 05/02/2023 04:11:05
Hola estimados

quiero poner un mensaje de abierto o cerrado en mi sitio web, no se porque no me funciona me da siempre el mensaje de cerrado no se donde esta el error. aqui abajo pongo el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
date_default_timezone_set('America/La_Paz');
    $hora_actual = date('H:i', time());
    $abre = "11:00";  #diez de la mañana
    $cierra = "23:45";  #diez de la noche
 
    if ($abre > $hora_actual || $cierra < $hora_actual) {
        echo "<span class=''>Abierto</span><br>
        ";
    }
    if ($abre < $hora_actual || $cierra > $hora_actual) {
        echo "<span class=''>Cerrado</span><br>
        ";
    } else {
        echo "<span class=''>Hay errores</span><br>
        ";
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

PHP - Operaciones con horas

Publicado por Hugo (37 intervenciones) el 05/02/2023 05:47:37
Amigo, buenas noches.

El problema lo tienes porque tu le estás diciendo en el primer comparativo: "si abre es mayor a la hora actual o si cierra es menor a la hora actual, entonces que te devuelva "Abierto", si la hora actual es igual a las 13:00 horas, entonces no se cumple ninguna de las dos condiciones posibles, ya que las 11:00 de $abre no es mayor y las 23:45 de $cierra no es menor.

Para ello, deberías hacerlo así:

1
2
3
4
5
6
7
8
9
10
11
if ($abre < $hora_actual || $cierra > $hora_actual) {
        echo "<span class=''>Abierto</span><br>
        ";
    }
    if ($abre > $hora_actual || $cierra < $hora_actual) {
        echo "<span class=''>Cerrado</span><br>
        ";
    } else {
        echo "<span class=''>Hay errores</span><br>
        ";
    }

Espero te sirva.
Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

PHP - Operaciones con horas

Publicado por Kathyu (905 intervenciones) el 05/02/2023 10:56:51
Si estas definiendo tu propia zona horaria, los horarios de apertura y cierre tienen un error.

11:00 no son las 10:00 y 23:45 no son las 22:00 (10 pm)

Además el comparador esta mal definido, necesitas incluir el igual (=) para que funcione y compare bien y otra cosa, los IF uno tras otro te darán error. Por lo tanto los scripts anteriores no funcionan.

Esto ya lo probé y funciona tal cual. Solo debes cambiar a tu zona horaria.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
date_default_timezone_set('Europe/Madrid');
    echo $hora_actual = date('H:i', time());
    $abre = "10:00";  #diez de la mañana
    $cierra = "22:00";  #diez de la noche
 
    if ($abre <= $hora_actual && $cierra >= $hora_actual) {
        echo "<span class=''><br><br>Abierto</span><br>
        ";
    }
    //elseif ($abre < $hora_actual || $cierra > $hora_actual) {
        //echo "<span class=''><br>Cerrado</span><br>";
    //}
    else {
        echo "<span class=''><br>Cerrado</span><br>
        ";
    }

El código comentado no tiene sentido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar