2010-12-27 16 views
22

mam $adate; który zawiera:PHP: dodaj sekund do daty

Tue Jan 4 07:59:59 2011 

chcę dodać do tej pory, co następuje:

$duration=674165; // in seconds 

Gdy sekunda dodaje muszę wynik z powrotem do formatu daty.

Nie wiem, co robię, ale otrzymuję dziwne wyniki.

Uwaga: obie zmienne są dynamiczne. Teraz są równe podanym wartościom, ale następne zapytanie będą miały różne wartości.

Odpowiedz

55

Jeśli używasz PHP 5.3+ można wykorzystać nowy sposób, aby to zrobić.

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

Myślę, że jest to łatwiejsze: '$ date-> add (DateInterval :: createFromDateString ('2 seconds')); ' Jeśli chcesz inny interwał, zajrzyj tutaj: http://php.net/manual/en/dateinterval.createfromdatestring.php –

+1

co to jest PT i S w PT674165S? – Andrew

10

Biorąc pod uwagę fakt, że $adate jest znacznik czasu (jeśli jest to przypadek), można zrobić coś takiego:

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

A co jest tym samym, można dodać '$ czas trwania 'to' $ adate'. – ncuesta

21

wystarczy użyć kilka ciekawych funkcji PHP Data/Czas:

$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

dzięki, chłopaki, działa świetnie! – user523129

2

to zrobić:

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