Простое, механическое решение состоит в том, чтобы полностью разбить дату:
$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);
Это даст вам метку времени в UTC.
Проблема с «показывает сокращение часового пояса» - вы не можете найти сокращение для данного смещения, потому что может быть несколько - вы не можете сказать, какой из, например. +01: 00 часовые пояса, в которых указана дата - может быть европейское, африканское или британское летнее время.
Это действительно зависит от того, что вы хотите сделать с данными.