@@ -280,6 +280,76 @@ public function testSubmitWithSecondsAndBrowserOmissionSeconds()
280280 $ this ->assertEquals ('03:04:00 ' , $ form ->getViewData ());
281281 }
282282
283+ public function testPreSetDataDifferentTimezones ()
284+ {
285+ $ form = $ this ->factory ->create (static ::TESTED_TYPE , null , [
286+ 'model_timezone ' => 'UTC ' ,
287+ 'view_timezone ' => 'Europe/Berlin ' ,
288+ 'input ' => 'datetime ' ,
289+ 'with_seconds ' => true ,
290+ 'reference_date ' => new \DateTimeImmutable ('2019-01-01 ' , new \DateTimeZone ('UTC ' )),
291+ ]);
292+ $ form ->setData (new \DateTime ('2022-01-01 15:09:10 ' , new \DateTimeZone ('UTC ' )));
293+
294+ $ this ->assertSame ('15:09:10 ' , $ form ->getData ()->format ('H:i:s ' ));
295+ $ this ->assertSame ([
296+ 'hour ' => '16 ' ,
297+ 'minute ' => '9 ' ,
298+ 'second ' => '10 ' ,
299+ ], $ form ->getViewData ());
300+ }
301+
302+ public function testPreSetDataDifferentTimezonesDuringDaylightSavingTime ()
303+ {
304+ $ form = $ this ->factory ->create (static ::TESTED_TYPE , null , [
305+ 'model_timezone ' => 'UTC ' ,
306+ 'view_timezone ' => 'Europe/Berlin ' ,
307+ 'input ' => 'datetime ' ,
308+ 'with_seconds ' => true ,
309+ 'reference_date ' => new \DateTimeImmutable ('2019-07-12 ' , new \DateTimeZone ('UTC ' )),
310+ ]);
311+ $ form ->setData (new \DateTime ('2022-04-29 15:09:10 ' , new \DateTimeZone ('UTC ' )));
312+
313+ $ this ->assertSame ('15:09:10 ' , $ form ->getData ()->format ('H:i:s ' ));
314+ $ this ->assertSame ([
315+ 'hour ' => '17 ' ,
316+ 'minute ' => '9 ' ,
317+ 'second ' => '10 ' ,
318+ ], $ form ->getViewData ());
319+ }
320+
321+ public function testPreSetDataDifferentTimezonesUsingSingleTextWidget ()
322+ {
323+ $ form = $ this ->factory ->create (static ::TESTED_TYPE , null , [
324+ 'model_timezone ' => 'UTC ' ,
325+ 'view_timezone ' => 'Europe/Berlin ' ,
326+ 'input ' => 'datetime ' ,
327+ 'with_seconds ' => true ,
328+ 'reference_date ' => new \DateTimeImmutable ('2019-01-01 ' , new \DateTimeZone ('UTC ' )),
329+ 'widget ' => 'single_text ' ,
330+ ]);
331+ $ form ->setData (new \DateTime ('2022-01-01 15:09:10 ' , new \DateTimeZone ('UTC ' )));
332+
333+ $ this ->assertSame ('15:09:10 ' , $ form ->getData ()->format ('H:i:s ' ));
334+ $ this ->assertSame ('16:09:10 ' , $ form ->getViewData ());
335+ }
336+
337+ public function testPreSetDataDifferentTimezonesDuringDaylightSavingTimeUsingSingleTextWidget ()
338+ {
339+ $ form = $ this ->factory ->create (static ::TESTED_TYPE , null , [
340+ 'model_timezone ' => 'UTC ' ,
341+ 'view_timezone ' => 'Europe/Berlin ' ,
342+ 'input ' => 'datetime ' ,
343+ 'with_seconds ' => true ,
344+ 'reference_date ' => new \DateTimeImmutable ('2019-07-12 ' , new \DateTimeZone ('UTC ' )),
345+ 'widget ' => 'single_text ' ,
346+ ]);
347+ $ form ->setData (new \DateTime ('2022-04-29 15:09:10 ' , new \DateTimeZone ('UTC ' )));
348+
349+ $ this ->assertSame ('15:09:10 ' , $ form ->getData ()->format ('H:i:s ' ));
350+ $ this ->assertSame ('17:09:10 ' , $ form ->getViewData ());
351+ }
352+
283353 public function testSubmitDifferentTimezones ()
284354 {
285355 $ form = $ this ->factory ->create (static ::TESTED_TYPE , null , [
0 commit comments