2011-08-18 24 views
5
//expiration 
$datetoday = date("F j, Y, G:i"); 

$expquery = mysql_query("SELECT a_expire FROM regform_admin WHERE status = 'Pending for payment'"); 
$row = mysql_fetch_array($expquery); 
$expirydate = $row['a_expire']; 
echo "$datetoday"; 
echo "$expirydate"; 
if ($datetoday == $expirydate) { 
    $expirequery = mysql_query("UPDATE regform_admin SET status = 'Expired' WHERE status = 'Pending'"); 
    $expirequery2 = mysql_query("UPDATE regform SET status = 'Expired' WHERE status = 'Pending'"); 
} 
//end expiration 

Hola, aquí finalizo el código de reserva. Mi problema es que si un cliente realiza una reserva en 23:30 y la reserva expirará a las 00:30 (1 hora), hice este código:Agregue una caducidad de 1 hora a la hora/fecha actual

$currentdate = date("F j, Y, G:i"); 
$onehour = date("G") + 1; 
$expire = date("F j, Y, $onehour:i"); 

El $onehour debe incrementar, pero el problema es que la reservación a las 23:30 debe vencer a las 24:30. Pero después de incrementar el $ onehour, los resultados de las 23:30 a las 24:40. Que mi programa no puede leer desde la hora militar de las 12 a.m. es 00:00 y no a las 00:00. ¿Alguien puede tener sugerencias en mi problema? Gracias. Lo siento por el Inglés perezoso estaba cansada de pensar

+0

espero que te das cuenta de esas consultas de actualización cambiarán cada fila de la tabla, no sólo el que ha seleccionado. –

+0

Sí, muchas gracias. Soy consciente de eso. :) – glove

Respuesta

10
$expire = date("F j, Y, H:i", strtotime('+1 hour')); 
+0

Hola, ¿me pueden explicar qué es la función de strtotime()? ¿Cuál es la diferencia entre el que publicaste con este: $ onehour = (date ("G") + 1)% 24; – glove

+0

@glove: para saber más sobre 'strtotime', consulte la documentación: http://php.net/manual/en/function.strtotime.php – Maher4Ever

+0

@glove Si acaba de modificar' $ onehour' y ajusta 24:40 para convertirse en 00:40, su nuevo tiempo de vencimiento sería "hoy a las 12:40 AM" en lugar de "mañana a las 12:40 AM" ... necesita mover toda la fecha 1 hora hacia adelante, no solo el componente de la hora. 'strtotime ('+ 1 hour')' devuelve una marca de tiempo UNIX de la hora actual más una hora, luego 'date' formatea la marca de tiempo. –

0
$one_hour_from_now = strtotime('+1 hour'); 

lo tanto, todo lo que necesita es:

$expire = date('F j, Y, G:i', strtotime('+1 hour')); 
2
$expire = date("F j, Y, H:i", time()+3600); // 3600 sec in hour 
-1

¿Por qué no acaba de comprobar si la hora actual es 23 ? Algo así como (no estoy seguro acerca de la sintaxis PHP del operador ternario sin embargo):

$onehour = date("G) > 22 ? 0 : date("G) + 1; 

A continuación, también quieren cambiar el día actual, y comprobar si cambia año.

0

Inténtelo:

$t = strtotime('2015-10-27 11:19:04'); 
$d = date('Y-m-d H:i:s', $t); 
echo $d . "<br/>"; 
$t = $t + 3600; 
$d = date('Y-m-d H:i:s', $t); 
echo $d . "<br/>"; 
Cuestiones relacionadas