2011-12-12 17 views
25

Necesito verificar en PHP si la hora actual es antes de las 2 pm de ese día.PHP Comprobar si la hora actual es anterior a la hora especificada

que he hecho esto con strtotime en las fechas antes, sin embargo esta vez es con sólo una vez, por lo que, obviamente, a las 0.00 horas cada día el tiempo se restablecerá y el booleano se restablecerá a partir false a true.

if (current_time < 2pm) { 
    // do this 
} 
+1

Esto ni siquiera es válido PHP. ¿Qué es 'current_time'? – KingCrunch

+6

@KingCrunch Creo que es un seudocódigo, en lugar de un código real. :-) –

+1

Sé que PHP no es válido, solo estaba dando un ejemplo de la lógica. –

Respuesta

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

Para obtener más información acerca de la función de la fecha por favor see the PHP manual. He utilizado el siguiente formateador tiempo:

H = formato de 24 horas de una hora (00 a 23)

+0

Buen punto sobre los minutos que no se requieren. Mente vinculando a los documentos para ''H''? –

+0

http://uk.php.net/manual/en/function.date.php Enumera todas las formas diferentes de formatear la fecha. Pensar en eso podría ser más limpio para usar 'G', ya que no incluye un 0 inicial, donde la hora es solo 1 dígito, aunque PHP no es lo suficientemente quisquilloso como para permitir que el efecto sea el resultado de la declaración if. – Tom

+0

Saludos por la edición de Treffynnon, fragmentos y piezas útiles. – Tom

0

intento con

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

// do this 

} 
4

tiempo de uso de 24 horas para recibir todo el año el problema de esta manera:

$time = 1400; 
$current_time = (int) date('Hi'); 
if($current_time < $time) { 
    // do stuff 
} 

Así 14:00 equivale a 14:00 en el tiempo de 24 horas. Si eliminamos los dos puntos del tiempo, entonces podemos evaluarlo como un número entero en nuestra comparación.

Para obtener más información acerca de la función de fecha, por favor see the PHP manual. He utilizado los siguientes formateadores de tiempo:

H format = 24 horas de una hora (00 a 23)

i = Minutos con ceros a la izquierda (00 a 59)

18

Try :

if(date("Hi") < "1400") { 
} 

Ver: 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 
+0

heh, me estaba volviendo loco tratando de leer eso con $ en el frente. No ayudó que dijera 'Hola' ^^ – JohnP

+0

¿Por qué no enlazar con el manual de PHP? –

+0

@JaredFarrish: Google es mi oráculo :) Ahora se corrigió –

11

Se podía pasar en el tiempo

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

o pasar en la fecha de forma explícita, así

if (time() < strtotime('2 pm ' . date('d-m-Y'))) { 
    //not yet 2 pm 
} 
+0

+1; Corrección de errores tipográficos y comparación hacia atrás. –

1

No nos qué versión de PHP se está ejecutando ha dicho, aunque , asumiendo que es PHP 5.2.2+ de lo que debería ser capaz de hacerlo como:

$now = new DateTime(); 
$twoPm = new DateTime(); 
$twoPm->setTime(14,0); // 2:00 PM 

entonces pregunte:

if ($now < $twoPm){ // such comparison exists in PHP >= 5.2.2 
    // do this 
} 

lo contrario, si está utilizando una de versión anterior (por ejemplo, 5,0) esto debe hacer el truco (y es mucho más simple):

$now = time(); 
$twoPm = mktime(14); // first argument is HOUR 

if ($now < $twoPm){ 
    // do this 
} 
0

Esta función comprobará si es entre horas en EST aceptando 2 params, arreglos con la hora y 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

Use time(), date() y strtotime() funciones:

if(time() > strtotime(date('Y-m-d').' 14:00') { 
    //... 
} 
0

Si desea comprobar si la hora es antes de las 2.30 de la tarde, se puede probar el siguiente segmento de código.

if (date('H') < 14.30) { 
    $pre2pm = true; 
}else{ 
    $pre2pm = false; 
}