DateTimeZone_getTransitions_bug1.phpt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. --TEST--
  2. GH-7752: DateTimeZone::getTransitions() does not return enough information
  3. --FILE--
  4. <?php
  5. function showTransitions(string $tzid, int $from)
  6. {
  7. $to = $from + ((2.5 * 366) * 24 * 60 * 60);
  8. echo "{$tzid} from @{$from}-@{$to}:\n\n";
  9. $tz = new DateTimeZone($tzid);
  10. foreach ($tz->getTransitions($from, $to) as $t) {
  11. printf("%12d %s %6d %s %s\n", $t['ts'], $t['time'], $t['offset'], $t['isdst'] ? "DST" : " x ", $t['abbr']);
  12. }
  13. echo "\n";
  14. }
  15. showTransitions('Europe/London', 1648342200);
  16. showTransitions('America/Los_Angeles', 1648557596); // GH Issue 7752
  17. showTransitions('America/Chicago', 1293861600); // PHP Bug 81660
  18. showTransitions('Europe/Paris', 1645095600); // GH Issue 8108
  19. ?>
  20. --EXPECT--
  21. Europe/London from @1648342200-@1727398200:
  22. 1648342200 2022-03-27T00:50:00+0000 0 x GMT
  23. 1648342800 2022-03-27T01:00:00+0000 3600 DST BST
  24. 1667091600 2022-10-30T01:00:00+0000 0 x GMT
  25. 1679792400 2023-03-26T01:00:00+0000 3600 DST BST
  26. 1698541200 2023-10-29T01:00:00+0000 0 x GMT
  27. 1711846800 2024-03-31T01:00:00+0000 3600 DST BST
  28. America/Los_Angeles from @1648557596-@1727613596:
  29. 1648557596 2022-03-29T12:39:56+0000 -25200 DST PDT
  30. 1667725200 2022-11-06T09:00:00+0000 -28800 x PST
  31. 1678615200 2023-03-12T10:00:00+0000 -25200 DST PDT
  32. 1699174800 2023-11-05T09:00:00+0000 -28800 x PST
  33. 1710064800 2024-03-10T10:00:00+0000 -25200 DST PDT
  34. America/Chicago from @1293861600-@1372917600:
  35. 1293861600 2011-01-01T06:00:00+0000 -21600 x CST
  36. 1300003200 2011-03-13T08:00:00+0000 -18000 DST CDT
  37. 1320562800 2011-11-06T07:00:00+0000 -21600 x CST
  38. 1331452800 2012-03-11T08:00:00+0000 -18000 DST CDT
  39. 1352012400 2012-11-04T07:00:00+0000 -21600 x CST
  40. 1362902400 2013-03-10T08:00:00+0000 -18000 DST CDT
  41. Europe/Paris from @1645095600-@1724151600:
  42. 1645095600 2022-02-17T11:00:00+0000 3600 x CET
  43. 1648342800 2022-03-27T01:00:00+0000 7200 DST CEST
  44. 1667091600 2022-10-30T01:00:00+0000 3600 x CET
  45. 1679792400 2023-03-26T01:00:00+0000 7200 DST CEST
  46. 1698541200 2023-10-29T01:00:00+0000 3600 x CET
  47. 1711846800 2024-03-31T01:00:00+0000 7200 DST CEST