Por que no aplicativo Laravel 11 / PHP 8.2 está sendo executado o código
$minDay = CurrencyHistory::select(DB::raw('MIN(day) as min_day'))->first()->min_day;
\Log::info($minDay);
\Log::info(Carbon::createFromTimestamp(strtotime($minDay))->format('j F, Y'));
Eu vejo resultados:
[2024-10-05 07:30:08] local.INFO: 2024-09-28
[2024-10-05 07:30:08] local.INFO: 27 September, 2024
Então o dia mínimo é 2024-09-28
, mas o valor resultante em um formulário que tenho é27 September, 2024
no modelo CurrencyHistory eu tenho:
protected $casts = [
'created_at' => 'datetime', 'updated_at' => 'datetime', 'value' => HistoryMoney::class, 'day' => 'date'
];
Rastreando sql eu tenho:
SELECT MIN(day) AS min_day
FROM `currency_histories` limit 1
O que realmente retorna valor 2024-09-28
.
O formato 'j F, Y' é inválido? Com o formato format('d F, Y'
o mesmo resultado... Qual formato devo usar?
Este é um erro comum.
Quando você usa
Carbon::createFromTimestamp(strtotime($minDay))
, uma instância Carbon é criada usando seu fuso horário padrão. Se seu fuso horário estiver atrás do UTC, o tempo retrocede, resultando em uma data de2024-09-27
.Atualizar assim