2010-07-21 16 views
14

xml ve rss özet akışlarını alıyorum ve verileri bir veritabanına veriyorum. Keşke daha fazla olacaktır eminim ... bugüne kadar iki farklı tarih biçimleri içine Herhangi bir tarih dizesini saat dilimi olmadan zaman damgasına dönüştürün

2010-07-20T17:33:19Z 

Wed, 21 Jul 2010 00:28:50 GMT 

Ve

çalıştırmak. Benim için postgresql veritabanı, saat dilimi olmayan zaman damgası. Php'de mevcut bir işlev var mı, yoksa herhangi bir tarih dizesini zaman dilimi olmadan zaman damgasına dönüştürmek için bir prosedür var mı (Y-m-d H: i: s)? strtotime ile

cevap

18

Kullanım date:

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

Sonuç:

2010-07-21 05:28:50 

.

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

Sonuç:

2010-07-20 22:33:19 
5

Zaman damgaları UTC olarak kabul edilir.

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

U biçimlendirme seçeneği olsa PHP5.3 gerektirdiğini

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

Not aynı zaman damgası olduğunu. Tarih dize bir zaman dilimi tanımlayıcı tedarik ederken, DateTime nesnesi bunu 2010-07-21 00:28:50 dönecektir GMT DateTime örneği

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

aşağıdaki çağrı nedenle zaman Zaman Dilimi tanır. Ancak bir DateTime nesnesinin saat dilimini, setTimezone() yöntemiyle değiştirebilirsiniz.

$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 

Ancak zaman damgasına ihtiyacınız varsa, buna gerek yoktur.

11

Hepsini dönüştürmenize gerek yoktur. PostgreSQL otomatik dönüştürmek olmalıdır:

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

Ayrıntıları [buradan] Postgres tanınan tarih/saat biçimleri hakkında (http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME -GİRİŞ). –

İlgili konular