2012-05-15 13 views
9

Oto przykład z ciągów datetime pracuję z:Jak dodać godzinę do czasu tego ciągu datetime?

Tue May 15 10:14:30 +0000 2012 

Oto moja próba dodać godzinę na nim:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->add(new DateInterval('P1h')); 

Ale druga linia daje błąd, że mogłem” t przekonwertować.

Dzięki.

Odpowiedz

46

Należy dodać T przed częścią specyfikacji czas:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->add(new DateInterval('PT1H')); 

Zobacz dokumentację DateIntervalconstructor: "okresie"

Format zaczyna się na literę P, dla Każdy okres trwania jest reprezentowany przez wartość całkowitą, po której następuje oznaczenie okresu. Jeśli czas trwania zawiera elementy czasu, ta część specyfikacji jest poprzedzona literą T.

(podkreślenie dodane)

+0

+1 DateInterval jest zawsze korzystne. –

2

Korzystanie strtotime():

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$time = strtotime($time) + 3600; // Add 1 hour 
$time = date('D M j G:i:s O Y', $time); // Back to string 
echo $time; 
8

poprzednich odpowiedzi działać. Jednak zazwyczaj korzystam z modyfikacji datetime w moich witrynach hostowanych zewnętrznie. Sprawdź numer php manual, aby uzyskać więcej informacji. z kodem zaproponował, to powinno działać tak:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->modify('+ 1 hour'); 

Dla tych, nie używając orientacji obiektu, wystarczy użyć go w ten sposób (pierwsza linia DateTime tylko przynieść somethng nowy do tego wątku, używam go do sprawdzenia serwera czas):

$dt = new DateTime("@".$_SERVER['REQUEST_TIME']); // convert UNIX epoch to PHP DateTime 
$dt = date_modify($dt, "+1 hour"); 

Best,