Ich kann nicht glauben, dass ich noch nie auf diesen zuvor gestoßen bin.Wie strtotime Analysedaten im australischen (d. H. UK) Format erstellt werden: TT/MM/JJJJ?
Grundsätzlich analysiere ich den Text in vom Menschen erstellten Textdokumenten und eines der Felder, die ich analysieren muss, ist ein Datum und eine Uhrzeit. Da ich in Australien bin, sind Daten wie formatiert, aber strtotime
möchte nur als ein US-formatiertes Datum analysieren. Auch explodieren durch /
wird nicht funktionieren, weil, wie ich schon erwähnte, diese Dokumente sind handgeschrieben und einige von ihnen nehmen die Form von d M yy
.
Ich habe mehrere Kombinationen von setlocale
ausprobiert, aber egal was ich versuche, die Sprache ist immer auf US-Englisch eingestellt.
Ich bin ziemlich sicher, Setlocale ist der Schlüssel hier, aber ich bin nicht in der Lage, den richtigen Code zu treffen. Versuchte diese:
- au
- au-en
- en_AU
- Australien
- aus
Alles andere kann ich versuchen?
Zum besseren Verständnis: Ich verwende IIS mit einer Windows-Box.
Vielen Dank :)
Iain
Beispiel:
$mydatetime = strtotime("9/02/10 2.00PM");
echo date('j F Y H:i', $mydatetime);
Produziert
2 September 2010 14:00
Ich möchte es produzieren:
9 February 2010 14:00
Meine Lösung
ich die Zecke auf eine der Antworten zu geben, wie es hier viel einfacher zu lesende Lösung zu mir ist, aber hier ist, was ich habe kommen mit:
- 0 oder:
$DateTime = "9/02/10 2.00PM"; $USDateTime = preg_replace('%([0-3]?[0-9]{1})\s*?[\./ ]\s*?((?:1[0-2])|0?[0-9])\s*?[./ ]\s*?(\d{4}|\d{2})%', '${2}/${1}/${3}', $DateTime); echo date('j F Y H:i',strtotime($USDateTime));
Weil ich auf die Benutzer mit ihrem termin~~POS=TRUNC in Einklang stehen nicht verlassen können, ich habe meine regex ein bisschen komplizierter gemacht 1 Ziffer zwischen 0 und 3
- 1 Ziffer zwischen 0 und 9 - ja, dies entspricht 37 als gültiges Datum, aber ich denke, die Regex ist schon groß genug!
- Konnte einige Leerräume sein
- Begrenzender Buchstabe (a '.'A '/' oder a' ‚)
- Könnte einig Leer
- sein Entweder:
- eine Zahl zwischen 10 und 12 OR
- eine Zahl zwischen 1 und 9 mit einem optionalen führenden 0
- Könnte einig Leer
- begrenzendes Zeichen sein, (a ' ' a '/' oder a'')
- Könnte einiger Leer seine
- Entweder:
- A Nummer 2 Ziffern lang ODER
- Eine Reihe 4 Ziffern lang
Hoffentlich wird dies die meisten Arten von Datum schriftlich passen ...
Willst du es nicht produzieren? 9. Februar 2010 14: 00'? Oder habt ihr nur 11 Monate im Jahr? –
Ja, bemerkte dies und änderte es. Kaffee ist noch nicht eingetreten. :) –
Diese Frage könnte Ihnen helfen http://stackoverflow.com/questions/5597833/strange-behaviour-of-my-code-with-strtotime/5597905#5597905 – Twelve47