@@ -160,9 +160,9 @@ protected function aggiornaSessione($sessione, $data)
160160 $ id_tipo = $ data ['id_tipo_intervento ' ];
161161 $ sessione ->setTipo ($ id_tipo );
162162
163- // Campi di base
164- $ sessione ->orario_inizio = $ data ['orario_inizio ' ];
165- $ sessione ->orario_fine = $ data ['orario_fine ' ];
163+ // conversione delle date dal fuso orario dell'app al fuso orario locale
164+ $ sessione ->orario_inizio = $ this -> convertToLocalTimezone ( $ data ['orario_inizio ' ]) ;
165+ $ sessione ->orario_fine = $ this -> convertToLocalTimezone ( $ data ['orario_fine ' ]) ;
166166 $ sessione ->km = $ data ['km ' ];
167167
168168 // Prezzi
@@ -180,4 +180,31 @@ protected function aggiornaSessione($sessione, $data)
180180
181181 return [];
182182 }
183+
184+ /**
185+ * Converte una data dal formato ISO con timezone al fuso orario locale del server.
186+ *
187+ * @param string $isoDateTime Data in formato ISO (es: "2025-11-11T08:00:00.000+01:00")
188+ * @return string Data convertita nel fuso orario locale in formato Y-m-d H:i:s
189+ */
190+ protected function convertToLocalTimezone ($ isoDateTime )
191+ {
192+ if (empty ($ isoDateTime )) {
193+ return null ;
194+ }
195+
196+ try {
197+ // Crea un oggetto Carbon dalla data ISO con timezone
198+ $ carbonDate = Carbon::parse ($ isoDateTime );
199+
200+ // Converte al fuso orario locale del server (Europe/Rome)
201+ $ localDate = $ carbonDate ->setTimezone ('Europe/Rome ' );
202+
203+ // Restituisce la data nel formato standard del database
204+ return $ localDate ->format ('Y-m-d H:i:s ' );
205+ } catch (\Exception $ e ) {
206+ // In caso di errore, restituisce la data originale
207+ return $ isoDateTime ;
208+ }
209+ }
183210}
0 commit comments