2013-01-25 82 views
11

嗨,我在Facebook上工作的圖形API,我需要一個組的所有帖子信息。所以我做到了,看到[created_date'] => '2013-01-25T00:11:02+0000'這個日期和時間代表我是說我知道2013-01-25是日期,00:11:02是時間,但T+0000代表什麼。Facebook創建日期中使用的時間格式是什麼?

BTW哪裏是Facebook的服務器。我應該使用哪個時間戳來匹配Facebook時間?

謝謝。

+0

這就是所謂的ISO。 – Hyperboreus

+4

它是['ISO 8601'](http://en.wikipedia.org/wiki/ISO_8601)準確地 –

回答

19

T = TIME和+0000是時區偏移量。 Facebook使用本地時區。您可以通過在圖形調用中添加參數:time_format = U來請求unix時間戳而不是字符串。

請參閱:https://chris.banes.me/2011/06/24/correctly-parsing-graph-api-event-times/

+0

thnk你高公園..這正是我需要的.. –

+1

+1。不知道'time_format' :) –

+1

@HighParkCoder本地化時區的含義是什麼? –

4

這是一個標準格式,具體是ISO 8601

雖然我不喜歡鏈接到它,http://www.w3schools.com/schema/schema_dtypes_date.asp確實有一個很好的「人類理解」解釋:

日期時間爲以下形式「YYYY-MM-DDTHH規定:毫米:ss」的 其中:

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 

指定一個時間區,你可以通過 進入UTC時間的DateTime加上 「Z」 後面的時間 - 這樣的:

2002-05-30T09:30:10Z

,或者你可以通過添加一個正的或 負時間在時間​​後指定一個從UTC時間偏移 - 這樣的:

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

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

因此,在你的情況下,+0000表示時間偏移量爲0 UTC。

12

日期格式被稱爲ISO 8601。字母T用於明確分隔日期和時間,並且+0000用於表示時區偏移量,在本例中爲GMT或UTC。

這就是說,你通常不需要太擔心實際的內容;而應該知道如何與他們合作。使用這樣的日期,你可以用strtotime()將其轉換成一個時間戳:

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

到時間戳轉換回字符串表示,可以簡單地使用gmdate()與預定義的日期不變DATE_ISO8601

echo gmdate(DATE_ISO8601, $ts); 

另外,使用​​:

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

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

*旁註:* DateTime :: createFromFormat()'自5.3.0起可用 – Raptor

相關問題