bug73460-002.phpt 949 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. --TEST--
  2. Bug #73460 (Datetime add not realising it already applied DST change)
  3. --FILE--
  4. <?php
  5. date_default_timezone_set('America/New_York');
  6. //DST starts Apr. 2nd 02:00 and moves to 03:00
  7. $start = new \DateTime('2006-04-02T01:00:00');
  8. $end = new \DateTime('2006-04-02T04:00:00');
  9. while($end > $start) {
  10. $now = clone $end;
  11. $end->sub(new \DateInterval('PT1H'));
  12. echo $end->format('Y-m-d H:i T') . PHP_EOL;
  13. }
  14. echo '-----' . \PHP_EOL;
  15. //DST ends Oct. 29th 02:00 and moves to 01:00
  16. $start = new \DateTime('2006-10-29T00:30:00');
  17. $end = new \DateTime('2006-10-29T03:00:00');
  18. $i = 0;
  19. while($end > $start) {
  20. $now = clone $start;
  21. $start->add(new \DateInterval('PT30M'));
  22. echo $start->format('Y-m-d H:i T') . PHP_EOL;
  23. }
  24. ?>
  25. --EXPECT--
  26. 2006-04-02 03:00 EDT
  27. 2006-04-02 01:00 EST
  28. -----
  29. 2006-10-29 01:00 EDT
  30. 2006-10-29 01:30 EDT
  31. 2006-10-29 01:00 EST
  32. 2006-10-29 01:30 EST
  33. 2006-10-29 02:00 EST
  34. 2006-10-29 02:30 EST
  35. 2006-10-29 03:00 EST