为什么在 Laravel 11 / php 8.2 应用程序中运行代码
$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'));
我看到结果:
[2024-10-05 07:30:08] local.INFO: 2024-09-28
[2024-10-05 07:30:08] local.INFO: 27 September, 2024
因此最短天数是2024-09-28
,但我所拥有的表格上的结果值是27 September, 2024
在货币历史模型中我有:
protected $casts = [
'created_at' => 'datetime', 'updated_at' => 'datetime', 'value' => HistoryMoney::class, 'day' => 'date'
];
跟踪 SQL 我有:
SELECT MIN(day) AS min_day
FROM `currency_histories` limit 1
它确实返回了价值2024-09-28
。
格式 'j F, Y' 无效吗?格式相同format('d F, Y'
,结果相同...我该使用哪种格式?
这是一个常见的错误。
当您使用 时
Carbon::createFromTimestamp(strtotime($minDay))
,将使用您的默认时区创建一个 Carbon 实例。如果您的时区落后于 UTC,时间将向后追溯,从而得到日期2024-09-27
。像这样更新