2010-07-21 46 views
14

Tôi nhận được nguồn cấp dữ liệu xml và rss và đưa dữ liệu vào cơ sở dữ liệu. Tôi đã chạy vào hai định dạng ngày khác cho đến nay ...chuyển đổi bất kỳ chuỗi ngày nào thành dấu thời gian không có múi giờ

Wed, 21 Jul 2010 00:28:50 GMT 

2010-07-20T17:33:19Z 

tôi chắc chắn rằng sẽ có nhiều hơn nữa. Cơ sở dữ liệu postgresql của tôi cho ngày đó là dấu thời gian không có múi giờ. Có một chức năng hiện có trong php hoặc là có một thủ tục để chuyển đổi bất kỳ chuỗi ngày để dấu thời gian mà không có múi giờ (Y-m-d H: i: s)?

Trả lời

18

Sử dụng date với strtotime:

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

Kết quả:

2010-07-21 05:28:50 

.

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

Kết quả:

2010-07-20 22:33:19 
5

Timestamps được coi là UTC.

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

là dấu thời gian tương tự như

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

Lưu ý rằng tùy chọn định dạng U đòi hỏi PHP5.3 mặc dù. Khi cung cấp một định danh múi giờ trong ngày String, đối tượng DateTime nhận các múi giờ, vì vậy khi bạn gọi sau trên dụ giờ DateTime

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

nó sẽ trở lại 2010-07-21 00:28:50. Bạn có thể thay đổi múi giờ của đối tượng DateTime với phương thức setTimezone() của nó.

$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 

Nhưng nếu bạn chỉ cần dấu thời gian thì không cần thiết.

11

Bạn không cần phải chuyển đổi nó. PostgreSQL nên chuyển đổi tự động:

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

Chi tiết về Postgres công nhận định dạng ngày/giờ [ở đây] (http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME -ĐẦU VÀO). –

Các vấn đề liên quan