2 Stimmen

Github API, "Datum" entschlüsseln

Ich verwende Github's api, um meine neuesten Übertragungen zu erhalten, und das zurückgegebene Datumsformat sieht wie folgt aus

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

Ich habe versucht, es so zu machen:

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

Aber es hat nicht geklappt, weil php dachte, ich würde 8 Stunden von der Zeit abziehen (wegen der Zeitzone). Ich möchte die Zeitzone zu halten, aber ich habe keine Ahnung, wie zu parsen, dass. Weiß jemand, wie man es zu haben, wo die Zeit korrekt ist und zeigt die Zeitzone Abkürzung (GMT, PST etc etc )?

4voto

Maerlyn Punkte 32964

Einfacher geht es nicht mehr:

$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

Siehe die Dokumentation der DateTime-Klasse für weitere Informationen.

1voto

Cal Punkte 7017

Die einfache, mechanische Lösung besteht darin, das Datum selbst vollständig aufzulösen:

$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);

Dadurch erhalten Sie einen Zeitstempel in UTC.

Das Problem ist "zeigt die Abkürzung der Zeitzone" - Sie können keine Abkürzung für einen bestimmten Offset finden, weil es mehrere geben kann - Sie können nicht sagen, in welcher der Zeitzonen (z.B. +01:00) das Datum liegt - es könnte europäische, afrikanische oder bristische Sommerzeit sein.

Es kommt wirklich darauf an, was Sie mit den Daten machen wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X