Frage

Ich erhalte falsche Ergebnisse bei Verwendung von IntlDateFormatter:

$dateFormater = \IntlDateFormatter::create(
'en_EN',
\IntlDateFormatter::LONG,
\IntlDateFormatter::NONE
);

$a = date('Y/m/d H:i:s',1332712800); //2012/03/26 00:00:00
$b = $dateFormater->format(1332712800); //March 25, 2012

Dies geschieht jedoch nur für Daten zwischen dem 26.03.2012 und dem 28.10.2012 und ohne Stundenangabe (00:00:00).

Ich kann nicht herausfinden, was das Problem ist.

Danke für die Hilfe.

War es hilfreich?

Lösung

http://userguide.icu-project.org/datetime/timezone#TOC-Factory-Methods-and-the-Default-Tim sagt

TimeZone verwaltet ein statisches Zeitzonenobjekt, das als bekannt ist Standardzeitzone.Dies ist die Zeitzone, die implizit verwendet wird, wenn der Benutzer keine angibt.ICU versucht, dies mit der Zeitzone des Host-Betriebssystems abzugleichen.

Kurz gesagt, wenn Sie das ändern möchten Standardzeitzone von intl bis was übereinstimmt date() sagt, Sie müssen die Zeitzone auf Ihrem Betriebssystem ändern.Aber Tu das nicht.

Es empfiehlt sich, die Zeitzone im Aufruf an anzugeben IntlDateFormatter::create().Wenn Sie die Standardzeitzone verwenden möchten, die PHP anderswo verwendet, können Sie diese mit abrufen date_default_timezone_get().

$dateFormater = \IntlDateFormatter::create(
    'en_EN',
    \IntlDateFormatter::LONG,
    \IntlDateFormatter::NONE,
    date_default_timezone_get()
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top