PHP IntlDateFormatter 形式が間違った日付を返す
質問
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
ただし、これは 2012/03/26 から 2012/10/28 の間の、時 (00:00:00) のない日付でのみ発生します。
何が問題なのか分かりません。
助けてくれてありがとう。
解決
http://userguide.icu-project.org/datetime/timezone#TOC-Factory-Methods-and-the-Default-Tim 言う
TimeZone
として知られる静的なタイム ゾーン オブジェクトを維持します。 デフォルトのタイムゾーン. 。これは、ユーザーが指定しない場合に暗黙的に使用されるタイム ゾーンです。ICU は、これをホスト OS のタイムゾーンと一致させようとします。
要するに、変更したい場合は、 デフォルトのタイムゾーン intl から何に一致するか date()
オペレーティング システムのタイム ゾーンを変更する必要があると言われています。しかし そんなことしないで.
への呼び出しでタイムゾーンを指定することをお勧めします。 IntlDateFormatter::create()
. 。PHP が他の場所で使用しているデフォルトのタイムゾーンを使用したい場合は、次のように取得できます。 date_default_timezone_get()
.
$dateFormater = \IntlDateFormatter::create(
'en_EN',
\IntlDateFormatter::LONG,
\IntlDateFormatter::NONE,
date_default_timezone_get()
);
所属していません StackOverflow