Porównaj ceny domen i usług IT, sprzedawców z całego świata

Formatowanie obiektu DateTime z uwzględnieniem Locale :: getDefault ()


Mam obiekt DateTime, z którym obecnie tworzę
$mytime->format("D d.m.Y")

Co daje mi dokładnie taki format, jakiego potrzebuję:

Wtorek 5.3.2012

Jedynym brakującym punktem jest właściwy język. Potrzebuję niemieckiego tłumaczenia wyrażenia
Tue
(
Tuesday
), czyli
Die
(
Dienstag
).
To daje mi prawidłowe ustawienie regionalne
Locale::getDefault()

Ale nie wiem, jak powiedzieć
DateTime :: format
, aby go użyć.
Czy nie ma sposobu na zrobienie czegoś takiego:
$mytime->format("D d.m.Y", \Locale::getDefault());

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz użyć rozszerzenia

Intl
http://php.net/intl
sformatować datę. Sformatuje daty/godziny zgodnie z wybranym ustawieniem regionalnym lub możesz nadpisać je za pomocą
IntlDateFormatter::setPattern()
http://php.net/intldateformatter.setpattern
.
Szybki przykład użycia niestandardowego szablonu dla żądanego formatu wyjściowego może wyglądać następująco.
$dt = new DateTime;$formatter = new IntlDateFormatter('de_DE', IntlDateFormatter::SHORT, IntlDateFormatter::SHORT);
$formatter->setPattern('E d.M.yyyy');echo $formatter->format($dt);

Który daje następujące wyniki (przynajmniej na dziś).

Di. 4.6.2013


<sup>
Edytować
</sup>
: AAA-boo! Odpowiedział na starożytne pytanie, ponieważ niektóre komentarze umieściły je na liście! Przynajmniej jest teraz wspomniana opcja Intl.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dzieje się tak, ponieważ
format
nie zna języka. Zamiast tego powinieneś użyć
strftime
http://php.net/manual/en/function.strftime.php
.
Na przykład:
setlocale(LC_TIME, "de_DE");//only necessary if the locale isn't already set
$formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp())

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się