Apabila mengembalikan hasil Laravel kepada pengguna, zon waktu dipaparkan secara tidak betul.
<p>Saya mempunyai API Laravel dan zon waktu aplikasi ditetapkan kepada UTC. Zon waktu MySQL ditetapkan kepada SYSTEM, yang juga dinyatakan sebagai UTC. Saya juga mempunyai lajur dalam jadual pengguna yang menyimpan maklumat zon waktu pengguna. <br /><br />Antara muka hadapan saya mempunyai medan di mana pengguna boleh memasukkan tarikh/masa sebagai masa proses tertentu dan masa ini akan dihantar ke API dalam masa pengguna Kawasan. Jadi apabila rekod itu disimpan, saya menukarnya kepada UTC dan kemudian memasukkannya ke dalam pangkalan data seperti ini </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'),
]);
</pra>
<p>Saya cuba mendapatkan rekod semua proses pengguna untuk hari semasa dalam zon waktu pengguna semasa dan mengembalikan hasil tersebut ke bahagian hadapan. Saya fikir keputusan itu betul, tetapi apabila komputer saya sampai ke tengah malam, keputusan masih ditunjukkan sebagai rekod hari sebelumnya selama kira-kira 10 jam atau lebih. Beginilah cara saya cuba mengembalikan hasil ini;</p>
<pre class="brush:php;toolbar:false;">$todayProcedures = Prosedur::query()
->di mana('user_id', $user->id)
->whereDate('procedure_time', '>=', Carbon::now()->startOfDay()->tz($user->timezone))
->whereDate('procedure_time', '<=', Carbon::now()->endOfDay()->tz($user->timezone))
->dapatkan();
</pra>
<p>Saya tidak dapat mengetahui di mana silap saya. </p>