2010-12-27 20 views
22

que tienen $adate; que contiene:PHP: añadir segundos para una fecha

Tue Jan 4 07:59:59 2011 

Quiero añadir a esta fecha la siguiente:

$duration=674165; // in seconds 

Una vez que se añaden los segundos necesito el resultado de nuevo en formato de fecha.

No sé lo que estoy haciendo, pero estoy obteniendo resultados extraños.

Nota: ambas variables son dinámicas. Ahora son iguales a los valores dados, pero la próxima consulta tendrán diferentes valores.

Respuesta

55

Si está usando PHP 5.3+ puede utilizar una nueva manera de hacerlo.

<?php 
$date = new DateTime(); 
echo $date->getTimestamp(). "<br>"; 
$date->add(new DateInterval('PT674165S')); // adds 674165 secs 
echo $date->getTimestamp(); 
?> 
+6

'$ date = new \ DateTime ('+'. $ Interval. 'Seconds');' – gondo

+5

Creo que es más fácil así: '$ date-> add (DateInterval :: createFromDateString ('2 seconds')); ' Si quiere otro intervalo, mire aquí: http://php.net/manual/en/dateinterval.createfromdatestring.php –

+1

¿Qué es PT y S en PT674165S? – Andrew

10

Teniendo en cuenta el hecho de que $adate es una marca de tiempo (si ese es el caso), se podría hacer algo como esto:

$duration = 674165; 
$result_date = strtotime(sprintf('+%d seconds', $duration), $adate); 
echo date('Y-m-d H:i:s', $result_date); 
+0

O lo que es lo mismo, se podría añadir 'duración $ 'to' $ adate'. – ncuesta

21

sólo tiene que utilizar algunos de PHP agradables funciones de fecha/hora:

$adate="Tue Jan 4 07:59:59 2011"; 
$duration=674165; 
$dateinsec=strtotime($adate); 
$newdate=$dateinsec+$duration; 
echo date('D M H:i:s Y',$newdate); 
+0

muchas gracias chicos, funciona genial !! – user523129

2

hacer esto:

$seconds = 1; 
$date_now = "2016-06-02 00:00:00"; 

echo date("Y-m-d H:i:s", (strtotime(date($date_now)) + $seconds)); 
2
// add 20 sec to now 
$duration = 20; 
echo date("Y-m-d H:i:s", strtotime("+$duration sec")); 
0
$current_time_zone = 150; 
date("Y-m-d H:i:s",strtotime(date("Y-m-d H:i:s"))+$current_time_zone); 
Cuestiones relacionadas