2010-07-21 5 views
14

XML 및 RSS 피드를 가져 와서 데이터를 데이터베이스에 저장하고 있습니다. 나는 더있을 것이라 확신합니다 ... 지금까지 두 개의 서로 다른 날짜 형식으로 시간대없이 모든 날짜 문자열을 타임 스탬프로 변환

2010-07-20T17:33:19Z 

Wed, 21 Jul 2010 00:28:50 GMT 

그리고

를 실행했습니다. 날짜에 대한 내 postgresql 데이터베이스는 시간대가없는 타임 스탬프입니다. PHP에 기존 함수가 있거나 시간대없이 시간 문자열로 모든 날짜 문자열을 변환하는 절차가 있습니까 (Y-m-d H : i : s)? strtotime

답변

18

사용 date :

$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 
5

타임 스탬프는 UTC로 간주됩니다.

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

U 포맷 옵션이 있지만 PHP5.3이 필요하다는

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

주와 같은 소인입니다. 날짜 문자열의 시간대 식별자를 공급하는 경우, DateTime 개체를 사용하면이 2010-07-21 00:28:50을 반환합니다 GMT 날짜 시간 인스턴스

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

에 다음 전화를 그렇게 할 때 시간대를 인식합니다. 당신은 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 

하지만 타임 스탬프 만 있으면 필요한 것은 아닙니다.

11

전혀 변환 할 필요가 없습니다. 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 
+3

세부 사항은 [여기] 포스트 그레스 인정 날짜/시간 형식에 대해 (http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME -입력). –

관련 문제