Lors du renvoi des résultats Laravel à l'utilisateur, le fuseau horaire ne s'affiche pas correctement.
<p>J'ai une API Laravel et le fuseau horaire de l'application est défini sur UTC. Le fuseau horaire de MySQL est défini sur SYSTEM, qui est également exprimé en UTC. J'ai également une colonne dans la table des utilisateurs qui stocke les informations de fuseau horaire de l'utilisateur. <br /><br />Mon interface frontale a un champ dans lequel l'utilisateur peut saisir une date/heure comme heure d'un certain processus, et cette heure sera envoyée à l'API au moment de l'utilisateur. zone. Ainsi, lorsque cet enregistrement est enregistré, je le convertis en UTC, puis je l'insère dans la base de données comme ceci </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'),
]);
≪/pré>
<p>J'essaie d'obtenir des enregistrements de tous les processus utilisateur pour la journée en cours dans le fuseau horaire de l'utilisateur actuel et de renvoyer ces résultats au frontend. Je pensais que les résultats étaient corrects, mais lorsque mon ordinateur est arrivé à minuit, les résultats étaient toujours affichés comme les enregistrements de la veille pendant environ 10 heures. C'est ainsi que j'essaie de renvoyer ces résultats ;</p>
<pre class="brush:php;toolbar:false;">$todayProcedures = Procedure::query()
->où('id_utilisateur', $user->id)
->whereDate('procedure_time', '>=', Carbon::now()->startOfDay()->tz($user->timezone))
->whereDate('procedure_time', '<=', Carbon::now()->endOfDay()->tz($user->timezone))
->obtenir();
≪/pré>
<p>Je n'arrive pas à comprendre où je me suis trompé. </p>