2010-07-21 17 views
14

Sto ricevendo feed xml e rss e inserendo i dati in un database. Ho eseguito in due diversi formati di data finora ...convertire qualsiasi stringa di data in data e ora senza fuso orario

Wed, 21 Jul 2010 00:28:50 GMT 

E

2010-07-20T17:33:19Z 

Sono sicuro che non ci sarà più. Il mio database postgresql per la data è timestamp senza fuso orario. Esiste una funzione esistente in PHP o esiste una procedura per convertire qualsiasi stringa di data in data e ora senza fuso orario (Y-m-d H: i: s)?

risposta

18

Usa date con strtotime:

$date = date('Y-m-d H:i:s', strtotime('Wed, 21 Jul 2010 00:28:50 GMT')); 
echo $date; 

Risultato:

2010-07-21 05:28:50 

.

$date = date('Y-m-d H:i:s', strtotime('2010-07-20T17:33:19Z')); 
echo $date; 

Risultato:

2010-07-20 22:33:19 
5

Timestamps sono considerati UTC.

$dt = new DateTime('Wed, 21 Jul 2010 00:28:50 GMT'); 
echo $dt->format('U'); // 1279672130 

è lo stesso timestamp come

$dt = new DateTime('Wed, 21 Jul 2010 02:28:50 CEST'); 
echo $dt->format('U'); // 1279672130 

Si noti che l'opzione di formattazione U richiede PHP5.3 però. Quando si fornisce un identificatore fuso orario nella Data String, l'oggetto DateTime riconosce il fuso orario, in modo che quando si chiama il seguente nell'istanza GMT DateTime

echo $dt->format('Y-m-d H:i:s'); 

tornerà 2010-07-21 00:28:50. Puoi modificare il fuso orario di un oggetto DateTime con il suo metodo setTimezone().

$dt = new DateTime('Wed, 21 Jul 2010 02:28:50 GMT+2'); 
$dt->setTimezone(new DateTimeZone('UTC')); 
echo $dt->format('Y-m-d H:i:s'); // 2010-07-21 00:28:50 

Ma se hai solo bisogno del timestamp, non è necessario.

11

Non è necessario convertirlo. PostgreSQL dovrebbe convertire automaticamente:

postgres=# create table test_tz (f1 timestamp without time zone); 
CREATE TABLE 
postgres=# insert into test_tz (f1) values ('Wed, 21 Jul 2010 00:28:50 GMT'); 
INSERT 0 1 
postgres=# insert into test_tz (f1) values ('2010-07-20T17:33:19Z'); 
INSERT 0 1 
postgres=# select f1 from test_tz; 
     f1   
--------------------- 
2010-07-21 00:28:50 
2010-07-20 17:33:19 
+3

dettagli sui formati di data/ora Postgres-riconosciute [qui] (http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME -INGRESSO). –

Problemi correlati