2013-01-25 28 views
11

Xin chào, tôi đang làm việc trên facebook Graph API, nơi tôi cần tất cả các thông tin bài viết của một nhóm. Vì vậy, tôi đã làm điều đó và thấy [created_date'] => '2013-01-25T00:11:02+0000' ngày và giờ này đại diện cho tôi nghĩa là tôi biết 2013-01-25 là ngày và 00:11:02 là thời gian nhưng những gì hiện T+0000 đại diện.Định dạng thời gian được sử dụng trong ngày tạo facebook là gì?

BTW máy chủ của facebook ở đâu. Tôi nên sử dụng dấu thời gian nào để phù hợp với thời gian facebook?

Cảm ơn bạn.

+0

Nó được gọi là ISO. – Hyperboreus

+4

Đó là ['ISO 8601'] (http://en.wikipedia.org/wiki/ISO_8601) để được chính xác –

Trả lời

19

T = TIME và +0000 là chênh lệch múi giờ. Facebook sử dụng múi giờ được bản địa hoá. Bạn có thể yêu cầu dấu thời gian unix thay vì chuỗi bằng cách thêm thông số: time_format = U vào cuộc gọi biểu đồ của bạn.

Xin xem: https://chris.banes.me/2011/06/24/correctly-parsing-graph-api-event-times/

+0

thnk bạn công viên cao .. đây chỉ là những gì tôi cần .. –

+1

+1. Không biết về 'time_format' :) –

+1

@HighParkCoder múi giờ địa phương hóa nghĩa là gì? –

4

Đây là định dạng chuẩn, cụ thể là ISO 8601.

Như nhiều như tôi không thích liên kết đến nó, http://www.w3schools.com/schema/schema_dtypes_date.asp không có một tốt "do con người có thể hiểu được" giải thích:

datetime được quy định trong các hình thức sau đây "YYYY-MM-DDThh: mm : ss" nơi:

YYYY indicates the year 
MM indicates the month 
DD indicates the day 
T indicates the start of the required time section 
hh indicates the hour 
mm indicates the minute 
ss indicates the second 

Để xác định một múi giờ, bạn có thể nhập một datetime trong thời gian tính theo giờ UTC bởi thêm một "Z" đằng sau thời điểm đó - như thế này:

2002-05-30T09:30:10Z

hoặc bạn có thể chỉ định một bù đắp từ thời UTC bằng cách thêm một thời gian tiêu cực tích cực hay đằng sau thời điểm đó - như thế này:

2002-05-30T09:30:10-06:00

hoặc

2002-05-30T09:30:10+06:00

Do đó, trong trường hợp của bạn, +0000 cho biết thời gian bù đắp của 0 từ UTC.

12

Định dạng ngày được gọi là ISO 8601. Chữ cái T được sử dụng để phân tách ngày và thời gian một cách rõ ràng và +0000 được sử dụng để biểu thị chênh lệch múi giờ, trong trường hợp này là GMT hoặc UTC.

Điều đó nói rằng, bạn thường không cần phải lo lắng quá nhiều về nội dung thực tế; thay vào đó bạn nên biết cách làm việc với họ.Để sử dụng như một ngày, bạn có thể sử dụng strtotime() để chuyển đổi nó thành một thời gian tem:

$ts = strtotime('2013-01-25T00:11:02+0000'); 

Để chuyển đổi dấu thời gian nằm lại thành một chuỗi đại diện, bạn chỉ có thể sử dụng gmdate() với ngày được xác định trước liên tục DATE_ISO8601:

echo gmdate(DATE_ISO8601, $ts); 

Ngoài ra, sử dụng DateTime:

// import date 
$d = DateTime::createFromFormat(DateTime::ISO8601, '2013-01-25T00:11:02+0000'); 

// export date 
echo $dd->format(DateTime::ISO8601), PHP_EOL; 
+0

* sidenote: *' DateTime :: createFromFormat() 'có sẵn từ 5.3.0 – Raptor

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