Sorry, wenn das ein Dupe ist - viele ähnliche Fragen, aber natürlich, wenn ich eine genaue Antwort finden könnte, würde ich nicht fragen :)PHP Datumsformat mit Intl-Aware Tag Suffix?
Hinweis Ich komme aus .Net und bin ein PHP-Neuling, also dort möglicherweise Noob-Skala Fehler.
Ich möchte in der Lage sein, z. new DateTime ('2014-01-01 13:15:00') as: 'Mittwoch, der 1. Januar 2014 um 13:15' (möglich - nicht lokalisierte) oder 'Mercredi 1er Janvier 2014 um 13:15' (nicht möglich ?).
Grundsätzlich scheint es keine ISO-Formatierung zu geben, die dem Datumsformat-Spezifizierer von PHP entspricht, noch gibt es eine für strftime? Der IntlDateFormatter :: FULL kommt zu nahe - aber 'Mittwoch, 1. Januar' oder 'mercredi 1 Janvier' ist nicht gut Englisch (oder Französisch) - aber es scheint das nächste zu sein, was ich bekommen kann?
Ich könnte ohne 'on', 'the' und 'at' leben, wenn ich müsste, aber Ordinal-Suffixe wären nett. ('Mittwoch ein Januar' - was ist das, der Anfang zu einem Gedicht?)
Ich sah one example auf der Strftime Abschnitt Kommentare zu PHP.net Adressierung dieses Problems (was scheint, dass es ein Problem ist) - jedoch Es schien nur die englischen Suffixe hinzuzufügen, die nicht viel brauchten. Ich möchte eine einfache Methode, die eine UTC-Datetime, ein Gebietsschema und eine Zeitzone verwendet und eine lokalisierte Zeichenkette ausgibt - vorzugsweise im "richtigen" lesbaren Format (wie oben), wie es in Englisch möglich ist. Ich möchte dieses ohne erreichen, das eine Formatzeichenkette für jede Sprache in der Welt schreibt. Es wäre auch schön, wenn es auf meiner Windows-Dev-Box sowie der * nix-Production-Box funktioniert.
<?php
$utcdate = new DateTime('2014-01-01 13:15:00', new DateTimeZone('UTC'));
echo $utcdate->format('l \t\h\e jS \o\f F Y \a\t g:ia') . "<br>";
function dumpDates($date, $locale, $tz){
$date->setTimeZone(new DateTimeZone($tz));
$fmt = new IntlDateFormatter($locale, IntlDateFormatter::FULL, IntlDateFormatter::FULL,
$tz, IntlDateFormatter::GREGORIAN );
echo $fmt->format($date) . "<br>";
// doesn't work under windows?
setLocale(LC_TIME, $locale);
echo strftime('%A, %#d %B %Y %I:%M:%S %p', $date->getTimeStamp()) . "<br>";
}
dumpDates($utcdate, 'en_GB', 'Europe/London');
dumpDates($utcdate, 'de_DE', 'Europe/Berlin');
dumpDates($utcdate, 'fr_FR', 'Europe/Paris');
?>