2010-12-27 18 views
22

devo $adate; che contiene:PHP: aggiungere secondi per una data

Tue Jan 4 07:59:59 2011 

voglio aggiungere a questa data il seguente:

$duration=674165; // in seconds 

Una volta che i secondi sono aggiunti mi serve il risultato di nuovo nel formato della data.

Non so cosa sto facendo, ma sto ottenendo risultati strani.

Nota: entrambe le variabili sono dinamiche. Ora sono uguali ai valori dati, ma alla prossima query avranno valori diversi.

risposta

55

Se si utilizza PHP 5.3+ è possibile utilizzare un nuovo modo per farlo.

<?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

Penso che sia più facile in questo modo: '$ date-> add (DateInterval :: createFromDateString ('2 secondi')) Se si desidera un altro intervallo, vedere qui: http://php.net/manual/en/dateinterval.createfromdatestring.php –

+1

qual è il PT e S in PT674165S? – Andrew

10

dato il fatto che $adate è un timestamp (se questo è il caso), si potrebbe fare qualcosa di simile:

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

O quello che è lo stesso, si potrebbe aggiungere '$ durata 'a' $ adate'. – ncuesta

21

basta usare alcune belle funzioni PHP di data/ora:

$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

grazie mille ragazzi, funziona alla grande !! – user523129

2

fare questo:

$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);