我最近更新了一个旧的laravel 5.7项目到8.0,创建的created_at和updated_at模型时间戳格式错误。以前,我在SQL Server数据库的所有模型中使用此代码,以使其在我的本地和生产环境之间工作。
public function getDateFormat()
{
if (PHP_OS_FAMILY == 'Windows') {
return 'Y-d-m H:i:s.v';
} else {
return 'Y-m-d H:i:s';
}
}
我使用windows开发应用程序,并使用Linux服务器与apache一起运行它,但是在更新项目之后,时间戳颠倒了日期的日期和月份。例如,如果我在日期'2022-06-07 13:00:00'中创建一个模型,那么时间戳将是'2022-07-06 13:00:00'。
当然,将getDateFormat()方法更改为只返回'Y-d-m H:i:s。v'在所有环境中工作,但创建php日期函数的另一个问题,例如,如果我调用<p> updated at: {{ date('d/m/Y H:i:s', strtotime($model->updated_at)) }}</p>
所需的结果将是更新时间:07/06/2022 13:00:00但相反,我得到更新在:06/07/2022 13:00:00.
我真的不知道这是一个php时区问题或与laravel有关的东西,因为问题显示在保存/更新行或显示格式化的数据信息。
try
date("Y-d-m H:i:s", time());
请使用:
updated at: {{ date('m/d/Y H:i:s', strtotime($model->updated_at)) }}
表示期望的结果,因为上面的m表示月份,d
表示天数,类似地,y
表示年份。
Laravel有Carbon,所以用它来写datetime
use CarbonCarbon;
...
if(! function_exists('format_date') {
function format_date(string $date): string
{
return Carbon::parse($date)->format('d-m-Y H:i:s');
// something like 31-12-2022 12:00:00, just change format as you need
}
}
From your view:
{{ format_date($model->date) }}
一定要检查Ref