我得到xml和rss提要並將數據放入數據庫。我碰到兩個不同的日期格式,那麼遠,將任何日期字符串轉換爲不帶時區的時間戳
Wed, 21 Jul 2010 00:28:50 GMT
而且
2010-07-20T17:33:19Z
我相信會有更多。我的日期postgresql數據庫是沒有時區的時間戳。在PHP中是否有現有的函數,或者是否有程序將任何日期字符串轉換爲沒有時區(Y-m-d H:i:s)的時間戳?
我得到xml和rss提要並將數據放入數據庫。我碰到兩個不同的日期格式,那麼遠,將任何日期字符串轉換爲不帶時區的時間戳
Wed, 21 Jul 2010 00:28:50 GMT
而且
2010-07-20T17:33:19Z
我相信會有更多。我的日期postgresql數據庫是沒有時區的時間戳。在PHP中是否有現有的函數,或者是否有程序將任何日期字符串轉換爲沒有時區(Y-m-d H:i:s)的時間戳?
使用date
與strtotime
:
$date = date('Y-m-d H:i:s', strtotime('Wed, 21 Jul 2010 00:28:50 GMT'));
echo $date;
結果:
2010-07-21 05:28:50
。
$date = date('Y-m-d H:i:s', strtotime('2010-07-20T17:33:19Z'));
echo $date;
結果:
2010-07-20 22:33:19
時間戳被認爲是UTC。
$dt = new DateTime('Wed, 21 Jul 2010 00:28:50 GMT');
echo $dt->format('U'); // 1279672130
相同時間戳
$dt = new DateTime('Wed, 21 Jul 2010 02:28:50 CEST');
echo $dt->format('U'); // 1279672130
注意,U
格式化選項需要PHP5.3雖然。當日期字符串提供一個時區標識符,DateTime對象識別的時區,所以當你呼籲GMT DateTime實例
echo $dt->format('Y-m-d H:i:s');
它將返回2010-07-21 00:28:50
以下。不過,您可以使用setTimezone()
方法更改DateTime對象的時區。
$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
但如果你只需要時間戳,它是沒有必要的。
根本不需要轉換它。 PostgreSQL的自動轉換:
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
詳情關於Postgres認可的日期/時間格式[點擊這裏](http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME -INPUT)。 – 2010-07-21 14:43:18