将Laravel结果返回给用户时,时区显示不正确。
<p>我有一个Laravel API,应用程序的时区设置为UTC。MySQL的时区设置为SYSTEM,也表示为UTC。我还在用户表中有一个列,用于存储用户的时区信息。<br /><br />我的前端界面有一个字段,用户可以输入一个日期/时间作为某个过程的时间,这个时间会以用户的时区发送到API。因此,当保存该记录时,我会将其转换为UTC,然后插入到数据库中,如下所示;</p><p><br /></p>
<pre class="brush:php;toolbar:false;">auth()->user()->procedure()->create([
'procedure_time' => Carbon::parse($request->procedure_time, auth()->user()->timezone)->setTimezone('UTC'),
]);
</pre>
<p>我正在尝试获取当前用户时区下当天所有用户过程的记录,并将这些结果返回到前端。我以为结果是正确的,但当我的电脑到午夜时,结果仍然显示为前一天的记录,持续了大约10个小时左右。这是我尝试返回这些结果的方式;</p>
<pre class="brush:php;toolbar:false;">$todayProcedures = Procedure::query()
->where('user_id', $user->id)
->whereDate('procedure_time', '>=', Carbon::now()->startOfDay()->tz($user->timezone))
->whereDate('procedure_time', '<=', Carbon::now()->endOfDay()->tz($user->timezone))
->get();
</pre>
<p>我无法找出我错在哪里。</p>