PHP Event Abfrage - Datum umwandeln - Facebook APP

Spunul

Grünschnabel
Hallo Zusammen,

ich bin gerade dabei ein Facebook App mit PHP zu programmieren.

Ich will Events von Facebook Abfragen.

Diese Abfrage stellt soweit kein Problem dar.

Nur mit dem Datum habe ich Schwierigkeiten es ins Deutsche Format umzuwandeln.

2012-07-21T10:30:00 --> 21. Juli 2012 19:30 (erstellt von Person)

2012-07-07T17:00:00 --> 7. Juli 2012 17:00 (erstellt von Seite)

2012-08-10T19:00:00 --> 11. August 2012 (ohne Uhrzeitangabe - erstellt von Person)


Das Datum von Facebook wird im Format "ISO 8601 Datum" ausgegeben. Was ich bereits rausgefunden habe, ist, dass sich die Datums unterscheiden und es abhängig ist, ob es von einer Seite erstellt wurde, oder von einer Person und ob eine Uhrzeitangabe gemacht wurde, oder nicht.

Das umwandeln ist kein Problem, nur leider wird das Datum nicht immer richtig umgewandelt. Das Problem ist, das einmal das Datum mit einer Timezone angeben ist und bei einer anderen nicht.


Ich verzweifle grad. Es wäre toll super, wenn mir jemand bei meinem Problem weiterhelfen kann.

Vielen Dank schon im vorraus.
 
2012-07-21T10:30:00 --> 21. Juli 2012 19:30 (erstellt von Person)

2012-07-07T17:00:00 --> 7. Juli 2012 17:00 (erstellt von Seite)

2012-08-10T19:00:00 --> 11. August 2012 (ohne Uhrzeitangabe - erstellt von Person)
Anhand von was man jetzt herausfinden ob und wenn ja, welche Timezone verwendetz wird.
In deinen Beispielen ist das ja:
+9h
+-0h
+ >5h

Nachtrag:
Im Grunde geht es am Schluss so
PHP:
//FB Datumsformat definieren
define('C_FB_DATE_FORMAT', 'Y-m-d\TH:i:s');

//Daten aus FB
$fbDate = '2012-07-21T10:30:00';
//TODO: Irgendwohier muss diese Info aus FB kommen
$fbDateTimeZone = 'America/New_York';
//Fals die Zeitzone aus FB als ID daherkommt, diese in den Namen wandeln
//$fbDateTimeZone = DateTimeZone::listIdentifiers($fbTimeZoneId);

//Datum mit der FB-Zeitzone erstellen
$date = DateTime::createFromFormat(C_FB_DATE_FORMAT, $fbDate, new DateTimeZone($fbDateTimeZone));

//Auf die eigene Zeitzone umrechnen
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));

print_r($date);

Ausgabe
Code:
DateTime Object
(
    [date] => 2012-07-21 16:30:00
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)
 
Zurück