2012-01-25 4 views
2

임 커밋 내 최신을 얻기 위해 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); 

하지만 PHP가 시간대에서 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