Domanda

Sto ricevendo risultati errati usando 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
.

Ma ciò accade solo per le date tra il 2012/03/26 e 2012/10/28 e senza ore (00:00:00).

Non riesco a scoprire qual è il problema.

Grazie per l'aiuto.

È stato utile?

Soluzione

http:// userguide.icu-project.org/datetime/timezone#TOC-Factory-Methods-and-the-default-tim dice

.

TimeZone mantiene un oggetto fuso orario statico noto come fuso orario predefinito .Questo è il fuso orario che viene utilizzato implicitamente quando l'utente non specifica uno.ICU tenta di abbinarlo al fuso orario del sistema operativo host.

In breve, se si desidera modificare il timezone predefinito da INTL in modo che corrisponda a quello che dice date(), è necessario modificare il fuso orario sul sistema operativo.Ma non farlo .

Si preferisce specificare il fuso orario nella chiamata a IntlDateFormatter::create().Se si desidera utilizzare il fuso orario predefinito che PHP utilizza altrove, che può essere recuperato con date_default_timezone_get() .

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top