2013-03-05 11 views
6

ho questo oggetto string nel mio array PHPphp stringa in un formato della data, aggiungere 12 ore

"2013/03/05 00: 00: 00 + 00"

Vorrei aggiungere 12 ore alla voce all'interno di PHP, quindi salvarlo di nuovo nella stringa nello stesso formato

Credo che ciò implichi la conversione della stringa in un oggetto data. Ma io non sono sicuro di come intelligente l'oggetto data è e se ho bisogno di dire che la formattazione dei parametri o se si suppone di prendere solo la stringa

$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->add("+12 hours"); 
//then convert back to string or just assign it to a variable within the array node 

mi è stato sempre indietro valori vuoti da questo metodo o di un simile quello che ho provato

Come risolverebbe questo problema?

Grazie, la vostra intuizione è apprezzato

risposta

20

Change add()-modify(). add() prevede un oggetto DateInterval.

<?php 
$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->modify("+12 hours"); 
echo $date->format("Y-m-d H:i:sO"); 

See it in action

Ecco un esempio utilizzando un oggetto DateInterval:

<?php 
$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->add(new DateInterval('PT12H')); 
echo $date->format("Y-m-d H:i:sO"); 

See it in action

+0

E se hai bisogno dell'offset, è '$ date-> format (" Y-m-d H: i: sO ");' – acme

+1

Bella presa. Aggiunto. –

2

Modificare questa linea

$date->add("+12 hours"); 

con

$date->add(new DateInterval("PT12H")); 

Questo aggiungerà 12 ore della data di

Guardate la pagina di DateInterval constructor di sapere come costruire la stringa DateInterval

+0

ok, ho visto quella sintassi sul sito di riferimento dataAdd http://www.php.net/manual/en/datetime.add.php ma non sono riuscito a trovare il riferimento che mi dicesse cosa fosse P12H e altri tipi di intervalli, se fosse lì non era molto intuitivo. Vieni a pensarci, forse è sulla datainterval pagina – CQM

+0

risposta @nlsbshtr aggiornata (mi mancava la T) –

1

Usare questa per aggiungere ore,

$date1= "2014-07-03 11:00:00"; 
$new_date= date("Y-m-d H:i:s", strtotime($date1 . " +3 hours")); 
echo $new_date; 
0

Se si dispone di intervallo dinamico, in questo modo si evitano errori di formato errato per $ dateDiff:

$dateDiff = "12 hours"; 
$interval = DateInterval::createFromDateString($dateDiff); 
$date = new DateTime("2013-03-05 00:00:00+00"); 
$date->add($interval); 
echo $date->format("Y-m-d H:i:sO");