@@ -280,6 +280,76 @@ public function testSubmitWithSecondsAndBrowserOmissionSeconds()
280
280
$ this ->assertEquals ('03:04:00 ' , $ form ->getViewData ());
281
281
}
282
282
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
+
283
353
public function testSubmitDifferentTimezones ()
284
354
{
285
355
$ form = $ this ->factory ->create (static ::TESTED_TYPE , null , [
0 commit comments