Konvertieren Sie ein Datumsformat in PHP [duplicate]
Lesezeit: 4 Minuten
Matthie
Ich versuche, ein Datum von zu konvertieren yyyy-mm-dd zu dd-mm-yyyy (aber nicht in SQL); Ich weiß jedoch nicht, wie die Datumsfunktion einen Zeitstempel benötigt, und ich kann aus dieser Zeichenfolge keinen Zeitstempel erhalten.
Wie ist das möglich?
tt-mm-jjjj ist das Standardformat in (meistens) Europa, zumindest wenn Sie Benutzern Daten präsentieren müssen.
– Matteo Riva
21. März 2010 um 17:23 Uhr
tt-mm-jjjj auch in Australien und Neuseeland
– Jonathan-Tag
3. Dezember 2011 um 12:45 Uhr
MM-TT-JJJJ in den USA. @stesch: Ersteres ist Standard in SQL. Ich bin mir nicht sicher Standard in irgendeinem Land. 🙂
– Herbert
15. Dezember 2011 um 6:38 Uhr
Eigentlich die Standard ist jjjj-mm-tt wie gem ISO 8601.
– Jezen Thomas
1. März 2013 um 7:43 Uhr
Der globale “Standard” ist JJJJ-MM-TT und sollte nach Möglichkeit immer von Systemen verwendet werden. Die Reihenfolge Tag, Monat, Jahr wird von Menschen in den meisten Teilen der Welt (außer den USA) verwendet, aber normalerweise mit Schrägstrichen, nicht mit Bindestrichen. Um Verwirrung zu vermeiden, trenne ich JJJJ-MM-TT nur mit Bindestrichen. Jedes andere Datumsformat werde ich mit Schrägstrichen trennen. Dies hält die Dinge konsistent.
(Siehe die strtotime und Datum Dokumentation auf der PHP-Seite.)
Beachten Sie, dass dies eine schnelle Lösung für die ursprüngliche Frage war. Für umfangreichere Konvertierungen sollten Sie unbedingt die verwenden DateTime Klasse zum Parsen und Formatieren 🙂
Was ist, wenn ich dieses Datum 0000-00-00 von mySQL erhalte? es gibt ein falsches Datum wie 31.12.1969 zurück …
– Enrique
29. April 2010 um 22:20 Uhr
@Enrique: Wenn Sie 000-00-00 von MySQL erhalten, sollten Sie dies ZUERST testen, bevor Sie es durch die Konvertierung führen. Einfach.
– Schattensturm
4. November 2012 um 15:20 Uhr
@SobinAugustin et al: strtotime() konvertiert die Datumszeichenfolge in einen “Unix-Zeitstempel (die Anzahl der Sekunden seit dem 1. Januar 1970 00:00:00 UTC)”, ein Format, das date() verstehen und dann konvertieren kann. Das funktioniert also nicht mit einem Zeitstempel vor 1970.
– Samuel Lindblom
30. Januar 2014 um 7:12 Uhr
@SamuelLindblom nein, so ist es nicht, es wird vor 1970 funktionieren.
– Sobin Augustinus
30. Januar 2014 um 9:47 Uhr
@SobinAugustin: Du hast recht. Es wird jedoch nicht vor dem 14.12.1901 funktionieren, so dass immer noch gilt, warum die oben aufgeführten Daten nicht funktionieren.
– Samuel Lindblom
30. Januar 2014 um 13:02 Uhr
Ceiroa
Wenn Sie die strtotime-Konvertierung vermeiden möchten (z. B. kann strtotime Ihre Eingabe nicht analysieren), können Sie Folgendes verwenden:
Ich danke Ihnen für die DateTime::createFromFormat() – es ist wirklich nützlicher als strtotime()
– Gtx
11. Dezember 2012 um 11:26 Uhr
Hinweis: Für die ersten beiden Methoden ist PHP 5.3+ erforderlich.
– Salman von Abbas
3. März 2014 um 20:01 Uhr
Vielen Dank für die neue DateTime-Option. Das funktionierte und war eine sehr saubere Option.
– Nina Morena
26. April 2014 um 12:26 Uhr
strtotime() nützlich für die Konvertierung wahrer Typ Format (Ymd) in andere Formate, aber DateTime::createFromFormat() ist universell. Es ist wie STR_TO_DATE bei MySQL
– Taron Saribkyan
6. Januar 2016 um 20:35 Uhr
Dieser hat einfach wirklich für mich funktioniert, anstatt Bullshit strtotime()
– Codekocher
7. August 2017 um 18:35 Uhr
Tim Lytle
Verwenden:
implode('-', array_reverse(explode('-', $date)));
Ohne den Aufwand für die Datumsumwandlung bin ich mir nicht sicher, ob es viel ausmachen wird.
Ja, geantwortet, als du deine eingereicht hast, glaube ich. Natürlich kann die in strtotime gefundene Fehlerprüfung etwas Nützliches sein.
Verstehe nicht, warum diese Antwort weniger Stimmen hat. Es sollte die am besten bewertete Antwort sein. Es löst das Problem einfach und schnell ohne Probleme. Danke
– Naeem Ul Wahhab
12. März 2013 um 19:42 Uhr
Sie können es sogar erneut aufrufen, wenn Sie das Datumsformat in seine ursprüngliche Form umkehren müssen. Beste Antwort in der Tat. 🙂
– Pedro Araujo Jorge
4. März 2014 um 15:17 Uhr
Dies sollte als akzeptierte Antwort geändert werden, es löst alle Datums- und Uhrzeitprobleme bei der Verwendung von Datums- und Datumsformaten.
tt-mm-jjjj ist das Standardformat in (meistens) Europa, zumindest wenn Sie Benutzern Daten präsentieren müssen.
– Matteo Riva
21. März 2010 um 17:23 Uhr
tt-mm-jjjj auch in Australien und Neuseeland
– Jonathan-Tag
3. Dezember 2011 um 12:45 Uhr
MM-TT-JJJJ in den USA. @stesch: Ersteres ist Standard in SQL. Ich bin mir nicht sicher Standard in irgendeinem Land. 🙂
– Herbert
15. Dezember 2011 um 6:38 Uhr
Eigentlich die Standard ist jjjj-mm-tt wie gem ISO 8601.
– Jezen Thomas
1. März 2013 um 7:43 Uhr
Der globale “Standard” ist JJJJ-MM-TT und sollte nach Möglichkeit immer von Systemen verwendet werden. Die Reihenfolge Tag, Monat, Jahr wird von Menschen in den meisten Teilen der Welt (außer den USA) verwendet, aber normalerweise mit Schrägstrichen, nicht mit Bindestrichen. Um Verwirrung zu vermeiden, trenne ich JJJJ-MM-TT nur mit Bindestrichen. Jedes andere Datumsformat werde ich mit Schrägstrichen trennen. Dies hält die Dinge konsistent.
– rjmunro
12. März 2013 um 11:49 Uhr