Il formato PHP IntlDateFormatter restituisce la data errata
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.
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 condate_default_timezone_get()
..$dateFormater = \IntlDateFormatter::create( 'en_EN', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, date_default_timezone_get() );