Autor |
Nachricht |
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Mi 22.06.2011 20:47
Titel [PHP] String -> date |
|
|
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!
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 22.06.2011 22:46
Titel
|
|
|
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
|
|
|
|
|
Anzeige
|
|
|
pantonine
Dabei seit: 03.03.2011
Ort: gehen Sie bitte weiter…
Alter: -
Geschlecht: -
|
|
|
|
|
choise
Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht:
|
Verfasst Mi 22.06.2011 23:09
Titel
|
|
|
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;
}
|
|
|
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mi 22.06.2011 23:14
Titel
|
|
|
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
|
|
|
|
|
xaos
Dabei seit: 06.10.2004
Ort: Kargath
Alter: -
Geschlecht: -
|
Verfasst Do 23.06.2011 08:52
Titel
|
|
|
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.
|
|
|
|
|
sahnemuh
Threadersteller
Dabei seit: 19.06.2003
Ort: /dev/null
Alter: 42
Geschlecht:
|
Verfasst Do 23.06.2011 11:56
Titel
|
|
|
@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
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
|
|
|
|
|
|
|
|
Ä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
|
|