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