Laravel 从时间戳转换到日期时显示错误的日期:Y/n/j

里卡多

我在我的模型中使用 laravel 转换来转换我的时间戳到日期:Y/n/j。但是 Laravel 将其转换为错误的日期。

模型:

class Diary {
    protected $casts = [
        'created_at' => 'date:Y/n/j',
    ];

应用程序.php:

'timezone' => 'Asia/Tokyo',

php.ini:

date.timezone = "Asia/Tokyo"

mysql:

select  * from diaries;
+----+-------+---------------------+
| id | diary | created_at          | 
+----+-------+---------------------+
|  1 | 愛    | 2021-06-08 01:00:01 |
+----+-------+---------------------+
1 row in set (0.02 sec)

铸造后的输出:

$firstDiary= Diary::first();
$firstDiary->toJson();

...    

// It must be 2021/6/8
'created_at' => 2021/6/7

我已经做了:

php工匠配置:缓存

date_default_timezone_set('亚洲/东京');

如果我将 created_at 从“2021-06-08 01:00:01”更改为大于“2021-06-08 8:59:59”的内容,它会正确显示。我正在使用 laravel 8、mysql 8 和 php 8。所以可能不是我的问题。有任何想法吗?

阿图尔K。

从 Laravel 7.0 开始,在调用toJson框架toJson后台使用 Carbon 的方法,该方法生成始终以 UTC 表示的 ISO-8601 兼容日期。因此,我猜您的时区在日期转换为您所需的格式之前已转换为 UTC,因此正在发生这样的事情:

\Carbon\Carbon::parse('2021-06-08 01:00:01', 'Asia/Tokyo')->timezone('UTC')->format('Y/n/j'); // 2021/6/7
\Carbon\Carbon::parse('2021-06-08 08:59:59', 'Asia/Tokyo')->timezone('UTC')->format('Y/n/j'); // 2021/6/7
\Carbon\Carbon::parse('2021-06-08 09:00:00', 'Asia/Tokyo')->timezone('UTC')->format('Y/n/j'); // 2021/6/8

我建议您继续以 UTC 格式存储和返回所有内容,并在最后可能的时刻转换为所需的时区,以保持一切可管理。虽然,如果您坚持将所有内容存储在Asia\Tokyo同一时区并在同一时区返回并且不进行任何转换,那么serilizeDate您的模型的覆盖函数应该可以按照早期升级指南中的描述来实现:

Laravel 7.0 升级指南:日期序列化

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Carbon在Laravel中将Javascript时间戳解析为错误的日期

Laravel,仅按日期过滤时间戳

Laravel时间戳格式/ JavaScript日期

日期时间的 laravel 4.2 错误

Laravel将时间戳转换为具有特定时区的日期

在Laravel中格式化日期时显示错误

Laravel:将时间戳从日期时间设置为 int

Laravel:设置时间戳仅返回自定义日期

如何更改时间戳的Laravel格式日期

如何在laravel的unix时间戳中保存日期?

Laravel 7 将日期格式更改为时间戳

Laravel在日期时间之间

使用Laravel和MSSQL将nvarchar转换为日期时间数据类型时出错

如何使用 Laravel 5.4 比较今天的日期和日期时间戳 created_at

Laravel将数据透视表时间戳更新为特定日期而不是附加日期

日期类将时间戳转换错误

当转换成时间戳日期转换返回错误的日期

从数据库转换数据日期时间 - laravel

如何将UTC日期时间转换为BST时间英国夏令时(BST)Laravel Carbon

在 Laravel 7 中导入 excel 文件时显示错误“日期值无效”

Laravel日期时间问题

Laravel Ajax以其他格式显示日期时间

Laravel查询日期比当前时间最近的日期

Laravel从日期时间中提取日期

Laravel Pivot表使用Carbon对象的额外日期时间字段格式(非时间戳)

Laravel:我无法在 mysql 中插入日期时间或时间戳

Laravel日期时间格式无效:1366错误的整数值:

Laravel-Carbon-解析日期时间以提取月份时出错

从角度发送数据时laravel中的日期时间格式无效