2012-01-25 7 views
2

Imがコミット私の最新を取得するためのGithubのAPIを使用して、日付の形式は、こののGitHub API、デコード "日付"

2012-01-25T11:23:28-08:00

のようなルックスを返さ私はこのようにそれを実行しようとしました:

$date = explode('T', $next['commit']['author']['date']); 
$time = strtotime($date[0] .' '. $date[1]); 
$date = date('M j, Y g:i a', $time); 

しかし、それは私が(時間帯のために)時間から8時間を引いていたと思ったので、右には分かりませんでした。私はタイムゾーンを維持したいと思いますが、私はそれを解析する手がかりがありません。誰かが、時間が正しいところでそれを持つ方法を知っていて、時間帯の省略形(GMT、PSTなど)を示していますか?

+0

注:2014年3月から、タイムゾーンはクライアントからのものになります。これ以上行うことはありません。 http://stackoverflow.com/a/15722951/6309 – VonC

答えて

4

それはこれ以上に簡単に取得することはできません。

$a = new DateTime("2012-01-25T11:23:28-08:00"); 
echo $a->format("Y-m-d H:i:s"); 
//outputs 2012-01-25 11:23:28 

は、詳細はdocumentation of the DateTime classを参照してください。

1

シンプル、機械、解決策は完全に自分の下の日付を破るためにある:これはあなたのUTCにタイムスタンプを与える

$date = substr($next['commit']['author']['date'], 0, 10); 
$time = substr($next['commit']['author']['date'], 11, 9); 
$zone = substr($next['commit']['author']['date'], 20, 6); 

list($y, $m, $d) = explode('-', $date); 
list($h, $i, $s) = explode(':', $time); 

$zh = substr($zone, 1, 2); 
$zm = substr($zone, 4, 2); 

if (substr($zone, 0, 1) == '-'){ 
    $h -= $zh; 
    $m -= $zm; 
}else{ 
    $h += $zh; 
    $m += $zm; 
} 

$ts = gmmktime($h,$i,$s,$m,$d,$y); 

問題は「タイムゾーンの省略形を表示しています」 - 指定されたオフセットの省略形を見つけることができません。いくつか存在する可能性があるため、省略形は見つかりません。 +01:00タイムゾーンには、ヨーロッパ、アフリカ、または夏の晴れの日が入ります。

本当にあなたがデータで何をしたいかによって異なります。

+0

タイムゾーンの略語について知っておくとよいでしょう。どうもありがとうございました! – Wilson212

関連する問題