此问题已经在这里有了答案:
此问题与将时间戳存储到日期时间中的问题不同。我有时间戳记,所以没有tz信息。我也不能改变我的数据库结构我使用的是雄辩的,但值得一提的是,手动执行MySQL查询插入时也会发生此问题
我的API收到此时间戳:
1572864543
是
Assuming that this timestamp is in seconds:
GMT: Monday 4 November 2019 10:49:03
Your time zone: lunedì 4 novembre 2019 11:49:03 GMT+01:00
当我保存在数据库上时,我不知道用户的MySQL时区配置是什么,但我需要MySQL绝对不要更改我的时间戳。
我确定是MySQL列是timestamp
我知道在Laravel中存储时间戳需要在类似sql的字符串中进行转换
我尝试使用
Carbon::createFromTimestamp($claims["date"])->toDateTimeString();
它可以工作,但是MySQL获取我的字符串,应用其时区设置,将其设置为UTC,并在内部保存新的时间戳。
因此检索时
UNIX_TIMESTAMP(received_ts)
我得到了错误的结果。
我绝对需要将时间戳保留在数据库中。如何保存时间戳而不进行更改?
原因是我的产品安装在不可预测的服务器时区中;我也不能强迫用户将数据库时区更改为UTC。
实际上,我的应用的时区已经通过laravel config/app.php
文件强制设置为'UTC'>
'timezone' => 'UTC',
此问题与将时间戳存储到日期时间中的问题不同。我有时间戳记,所以没有tz信息。同样,我无法雄辩地改变我的数据库结构,但值得一提的是...
我确定在我的MySQL连接配置的选项中强制使用utc。