Existe uma razão pela qual FrozenDate::parseDate
, chamado com o mês de setembro (ex. Set), a data não é analisada?
Código:
$months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
foreach($months as $m)
{
$d = "01-".$m."-23";
debug($d);
$fd = FrozenDate::parseDate($d, "dd-MMM-yy");
debug($fd);
}
APP/Controller\AdministratorsController.php (line 202)
'01-Sep-23'
APP/Controller\AdministratorsController.php (line 204)
null
Editar #1
Tentei enviar quaisquer erros usando getLastErrors()
. Nada lá também.
debug(FrozenDate::getLastErrors());
APP/Controller\AdministratorsController.php (line 205)
[
'warning_count' => (int) 0,
'warnings' => [ ],
'error_count' => (int) 0,
'errors' => [ ],
]
Editar #2
Parece que usar "Sept" funciona. Lembrando que estou importando do Excel e o formato dado é "Set" e não "Set". E a data "01-Set-23" é convertida em "01-Set-2023" no Excel por algum motivo.
$months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];
foreach($months as $m)
{
$d = "01-".$m."-23";
debug($d);
$fd = FrozenDate::parseDate($d, "dd-MMM-yy");
debug($fd);
}
Solução
Defina uma localidade antes de chamar a parseDate()
função.
FrozenDate::setDefaultLocale("en_US");//en_CA doesn't work
Problema de CLDR/ICU, em versões mais recentes (não tenho certeza sobre o mais recente, não posso testá-lo agora), para determinados locais
Sept
foi introduzido ouSep
removido, ou vice-versa, ou alguma combinação ou qualquer outra coisa. Não está claro para mim nenhum dos comentários e realmente não estou com vontade de perder horas para investigá-lo.tl;dr, clássico CLDR/ICU L. Melhor se acostumar com isso, coisas assim acontecem regularmente.