mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 14:19 Benutzername: Passwort: Auto-Login

Thema: [PHP] String -> date vom 22.06.2011


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] String -> date
Autor Nachricht
sahnemuh
Threadersteller

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Mi 22.06.2011 20:47
Titel

[PHP] String -> date

Antworten mit Zitat Zum Seitenanfang

Hallo Forum,

ich würde gerne einen String Der immer wie folgt formatiert ist: "3:00AM Saturday, June 25th" in ein deutsches Datum umformatieren.

Derzeit mache ich das recht brachial:

Code:
               function formatFBDate($data) {
                  $dateArr = explode(", ",$data);
                  $monthDay = explode(" ",$dateArr[1]);
                  $yearTime = explode(" ",$dateArr[2]);
                  $month = $monthDay[0];
                  $day = $monthDay[1];
                  $year = $yearTime[0];
                  $time = $yearTime[2];
                  return(strtotime( $day . "." . $month . "." . $year));
               }

Hat jemand einen eleganteren ansatz (regex?) für mich? Ich bin so gar kein regexperte :/
das wäre total prima!
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 22.06.2011 22:46
Titel

Antworten mit Zitat Zum Seitenanfang

Jo klar geht das zu regexen, ist aber arbeitsaufwendig zu testen - da hat doch keiner Bock drauf, also musste da wohl selbst ran. Was ist das denn das für ein bescheuertes Datetime-Format? Kommt das von Facebook? Das kann kein Standard sein, das ist ja noch nicht mal ohne Weiteres sortierbar.

// Ist doch eigentlich auch egal, wenn die Funktion gut genug gekapselt ist, dass sie niemals mehr einer sieht, würde ich behaupten, dass der Performance-Impact zu vernachlässigen ist. Wenn es überhaupt einen gibt - die Regex-Engine ist auch nicht gerade leichtgewichtig.

Also wenn Du meinst dass das Ding da oben funktioniert, lass es doch so und konzentriere Dich auf andere Sachen. Es sei denn, Du hast Bock, Dich mit regulären Ausdrücken auseinander zu setzen, das würde der ganzen Sache dann noch einen Sinn stiften;)


Zuletzt bearbeitet von bacon am Mi 22.06.2011 22:57, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
pantonine

Dabei seit: 03.03.2011
Ort: gehen Sie bitte weiter…
Alter: -
Geschlecht: -
Verfasst Mi 22.06.2011 23:04
Titel

Antworten mit Zitat Zum Seitenanfang

http://de3.php.net/manual/de/function.strptime.php
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Mi 22.06.2011 23:09
Titel

Antworten mit Zitat Zum Seitenanfang

da du ja anscheinen auf die stunde keinen wert legst(oder?) könnte man es zumindest noch etwas verkürzen, oder liege ich hiermit falsch:
Code:

function formatFBDate($data) {
   $date = substr($data, strpos($data,' ')+1);
   $time = strtotime($date);
   return $time;
}

  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 22.06.2011 23:14
Titel

Antworten mit Zitat Zum Seitenanfang

pantonine hat geschrieben:
http://de3.php.net/manual/de/function.strptime.php


Fick die henne, danach hab ich mich totgesucht, ich dachte letztlich nur davon geträumt zu haben. Wenn es aber immer noch nicht plattformunabhängig funktioniert, würde ich´s dennoch wie oben oder ähnlich selbst machen.

//
Zitat:
Month and weekday names and other language dependent strings respect the current locale set with setlocale() (LC_TIME).


Und wie geht die Funktion mit AM/PM um?


Zuletzt bearbeitet von bacon am Mi 22.06.2011 23:16, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
xaos

Dabei seit: 06.10.2004
Ort: Kargath
Alter: -
Geschlecht: -
Verfasst Do 23.06.2011 08:52
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Note:

Internally, this function calls the strptime() function provided by the system's C library. This function can exhibit noticeably different behaviour across different operating systems. The use of date_parse_from_format(), which does not suffer from these issues, is recommended on PHP 5.3.0 and later.


Code:
$date = "3:00AM Saturday, June 25th";
print_r(date_parse_from_format("H:iA l, F jS", $date));


Oder so ähnlich.
  View user's profile Private Nachricht senden
sahnemuh
Threadersteller

Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht: Männlich
Verfasst Do 23.06.2011 11:56
Titel

Antworten mit Zitat Zum Seitenanfang

@bacon: ja. Das ist ein Datum eines Events aus dem Öffentlichen Facebook Stream einer Seite/eines Places. Events werden dort lustigerweise auch nirgends als solche gekennzeichnet, sondern unterscheiden sich von regulären Posts darin, dass sie "properties" haben in denen irgendwann mal als String das Datum auftaucht. Zusätzlich wird, sofern ein Enddatum angegeben ist auch nur dieses ausgegeben *Schnief*

Was ich grade noch gemerkt habe: Das Datum ist mal so: "3:00AM Saturday, June 25th" und mal so: "Sunday, June 5, 2011 at 10:00pm" formatiert (je nachdem in welchem Kontext es gepostet wurde).

strptime klingt gut. Nun muß ich noch auseinanderfriemeln ob und wenn ja welches Datum ich grade von FB bekomme und dann entsprechend die formatierung umbauen. :/
UARGH!

€: Auf jeden Fall schon mal vielen Dank für die Hilfe. Das bringt mich ein Stück weiter.


Zuletzt bearbeitet von sahnemuh am Do 23.06.2011 11:56, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen RegExp String zwischen 2 Zeichen in einem String entfernen
[PHP] Date ADD
[sql] date, veranstaltungskalender
Sind WAP-Seiten noch up to date?
[AS] String als Variable
Datum als Date an MySql-Datenbank übergeben
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.