@@ -258,4 +258,53 @@ public function testCreateSapTimestamps($isotime, $saptime)
258
258
$ dateTime = new SapDateTime ($ isotime );
259
259
static ::assertSame ($ saptime , $ dateTime ->format (SapDateTime::SAP_TIMESTAMP ));
260
260
}
261
+
262
+ /**
263
+ * Data provider for timezones.
264
+ * @return array
265
+ */
266
+ public static function provideTimezones ()
267
+ {
268
+ return [
269
+ [
270
+ SapDateTime::SAP_TIMESTAMP ,
271
+ '20200301000102 ' ,
272
+ new \DateTimeZone ('CET ' ),
273
+ '2020-03-01T00:01:02+01:00 ' ,
274
+ '2020-02-29T23:01:02+00:00 '
275
+ ],
276
+ [
277
+ 'Y-m-d H:i:s ' ,
278
+ '2020-03-01 00:01:02 ' ,
279
+ new \DateTimeZone ('CET ' ),
280
+ '2020-03-01T00:01:02+01:00 ' ,
281
+ '2020-02-29T23:01:02+00:00 '
282
+ ],
283
+ [
284
+ SapDateTime::SAP_DATE ,
285
+ '20200301 ' ,
286
+ new \DateTimeZone ('CET ' ),
287
+ '2020-03-01T00:00:00+01:00 ' ,
288
+ '2020-02-29T23:00:00+00:00 '
289
+ ]
290
+ ];
291
+ }
292
+
293
+ /**
294
+ * Test timezones.
295
+ * @dataProvider provideTimezones
296
+ * @param string $format
297
+ * @param string $time
298
+ * @param \DateTimeZone $zone
299
+ * @param string $expected
300
+ * @param string $utc
301
+ * @throws \Exception
302
+ */
303
+ public function testTimezones ($ format , $ time , $ zone , $ expected , $ utc )
304
+ {
305
+ $ dateTime = SapDateTime::createFromFormat ($ format , $ time , $ zone );
306
+ static ::assertSame ($ expected , $ dateTime ->format ('c ' ));
307
+ $ dateTime ->setTimezone (new \DateTimeZone ('UTC ' ));
308
+ static ::assertSame ($ utc , $ dateTime ->format ('c ' ));
309
+ }
261
310
}
0 commit comments