@@ -90,6 +90,52 @@ public static function provideDateTimes()
9090 ];
9191 }
9292
93+ /**
94+ * @dataProvider provideNoTimezoneDateTimes
95+ */
96+ public function testCastDateTimeNoTimezone ($ time , $ xDate , $ xInfos )
97+ {
98+ $ stub = new Stub ();
99+ $ date = new NoTimezoneDate ($ time );
100+ $ cast = DateCaster::castDateTime ($ date , Caster::castObject ($ date , \DateTime::class), $ stub , false , 0 );
101+
102+ $ xDump = <<<EODUMP
103+ array:1 [
104+ "\\x00~\\x00date" => $ xDate
105+ ]
106+ EODUMP ;
107+
108+ $ this ->assertDumpEquals ($ xDump , $ cast );
109+
110+ $ xDump = <<<EODUMP
111+ Symfony\Component\VarDumper\Caster\ConstStub {
112+ +type: 1
113+ +class: " $ xDate"
114+ +value: "%A $ xInfos%A"
115+ +cut: 0
116+ +handle: 0
117+ +refCount: 0
118+ +position: 0
119+ +attr: []
120+ }
121+ EODUMP ;
122+
123+ $ this ->assertDumpMatchesFormat ($ xDump , $ cast ["\0~ \0date " ]);
124+ }
125+
126+ public static function provideNoTimezoneDateTimes ()
127+ {
128+ return [
129+ ['2017-04-30 00:00:00.000000 ' , '2017-04-30 00:00:00.0 +00:00 ' , 'Sunday, April 30, 2017 ' ],
130+ ['2017-04-30 00:00:00.100000 ' , '2017-04-30 00:00:00.100 +00:00 ' , 'Sunday, April 30, 2017 ' ],
131+ ['2017-04-30 00:00:00.120000 ' , '2017-04-30 00:00:00.120 +00:00 ' , 'Sunday, April 30, 2017 ' ],
132+ ['2017-04-30 00:00:00.123000 ' , '2017-04-30 00:00:00.123 +00:00 ' , 'Sunday, April 30, 2017 ' ],
133+ ['2017-04-30 00:00:00.123400 ' , '2017-04-30 00:00:00.123400 +00:00 ' , 'Sunday, April 30, 2017 ' ],
134+ ['2017-04-30 00:00:00.123450 ' , '2017-04-30 00:00:00.123450 +00:00 ' , 'Sunday, April 30, 2017 ' ],
135+ ['2017-04-30 00:00:00.123456 ' , '2017-04-30 00:00:00.123456 +00:00 ' , 'Sunday, April 30, 2017 ' ],
136+ ];
137+ }
138+
93139 public function testCastDateTimeWithAdditionalChildProperty ()
94140 {
95141 $ stub = new Stub ();
@@ -407,3 +453,15 @@ private function createInterval($intervalSpec, $ms, $invert)
407453 return $ interval ;
408454 }
409455}
456+
457+ class NoTimezoneDate extends \DateTime
458+ {
459+ /**
460+ * @return \DateTimeZone|false
461+ */
462+ #[\ReturnTypeWillChange]
463+ public function getTimezone ()
464+ {
465+ return false ;
466+ }
467+ }
0 commit comments