1--TEST-- 2RFC: DateTime and Daylight Saving Time Transitions (zone type 3, ba) 3--CREDITS-- 4Daniel Convissor <danielc@php.net> 5--FILE-- 6<?php 7 8date_default_timezone_set('America/New_York'); 9$date_format = 'Y-m-d H:i:s T e'; 10$interval_format = 'P%dDT%hH'; 11 12/* 13 * Backward Transitions, add(). 14 */ 15 16$start = new DateTime('2010-11-07 01:59:59'); 17$interval_spec = 'PT1S'; 18$interval = new DateInterval($interval_spec); 19echo 'ba1 ' . $start->format($date_format) . " + $interval_spec = " 20 . $start->add($interval)->format($date_format) . "\n"; 21 22$start = new DateTime('2010-11-06 04:30:00'); 23$interval_spec = 'P1D'; 24$interval = new DateInterval($interval_spec); 25echo 'ba2 ' . $start->format($date_format) . " + $interval_spec = " 26 . $start->add($interval)->format($date_format) . "\n"; 27 28$start = new DateTime('2010-11-06 04:30:00'); 29$interval_spec = 'PT24H'; 30$interval = new DateInterval($interval_spec); 31echo 'ba3 ' . $start->format($date_format) . " + $interval_spec = " 32 . $start->add($interval)->format($date_format) . "\n"; 33 34$start = new DateTime('2010-11-06 04:30:00'); 35$interval_spec = 'PT23H'; 36$interval = new DateInterval($interval_spec); 37echo 'ba4 ' . $start->format($date_format) . " + $interval_spec = " 38 . $start->add($interval)->format($date_format) . "\n"; 39 40$start = new DateTime('2010-11-06 04:30:00'); 41$interval_spec = 'PT22H'; 42$interval = new DateInterval($interval_spec); 43echo 'ba5 ' . $start->format($date_format) . " + $interval_spec = " 44 . $start->add($interval)->format($date_format) . "\n"; 45 46$start = new DateTime('2010-11-06 04:30:00'); 47$interval_spec = 'PT21H'; 48$interval = new DateInterval($interval_spec); 49echo 'ba6 ' . $start->format($date_format) . " + $interval_spec = " 50 . $start->add($interval)->format($date_format) . "\n"; 51 52$start = new DateTime('2010-11-06 01:30:00'); 53$interval_spec = 'P1D'; 54$interval = new DateInterval($interval_spec); 55echo 'ba7 ' . $start->format($date_format) . " + $interval_spec = " 56 . $start->add($interval)->format($date_format) . "\n"; 57 58$start = new DateTime('2010-11-06 01:30:00'); 59$interval_spec = 'P1DT1H'; 60$interval = new DateInterval($interval_spec); 61echo 'ba8 ' . $start->format($date_format) . " + $interval_spec = " 62 . $start->add($interval)->format($date_format) . "\n"; 63 64$start = new DateTime('2010-11-06 04:30:00'); 65$interval_spec = 'PT25H'; 66$interval = new DateInterval($interval_spec); 67echo 'ba9 ' . $start->format($date_format) . " + $interval_spec = " 68 . $start->add($interval)->format($date_format) . "\n"; 69 70$start = new DateTime('2010-11-06 03:30:00'); 71$interval_spec = 'P1D'; 72$interval = new DateInterval($interval_spec); 73echo 'ba10 ' . $start->format($date_format) . " + $interval_spec = " 74 . $start->add($interval)->format($date_format) . "\n"; 75 76$start = new DateTime('2010-11-06 02:30:00'); 77$interval_spec = 'P1D'; 78$interval = new DateInterval($interval_spec); 79echo 'ba11 ' . $start->format($date_format) . " + $interval_spec = " 80 . $start->add($interval)->format($date_format) . "\n"; 81 82echo "\n"; 83 84?> 85--EXPECT-- 86ba1 2010-11-07 01:59:59 EDT America/New_York + PT1S = 2010-11-07 01:00:00 EST America/New_York 87ba2 2010-11-06 04:30:00 EDT America/New_York + P1D = 2010-11-07 04:30:00 EST America/New_York 88ba3 2010-11-06 04:30:00 EDT America/New_York + PT24H = 2010-11-07 03:30:00 EST America/New_York 89ba4 2010-11-06 04:30:00 EDT America/New_York + PT23H = 2010-11-07 02:30:00 EST America/New_York 90ba5 2010-11-06 04:30:00 EDT America/New_York + PT22H = 2010-11-07 01:30:00 EST America/New_York 91ba6 2010-11-06 04:30:00 EDT America/New_York + PT21H = 2010-11-07 01:30:00 EDT America/New_York 92ba7 2010-11-06 01:30:00 EDT America/New_York + P1D = 2010-11-07 01:30:00 EDT America/New_York 93ba8 2010-11-06 01:30:00 EDT America/New_York + P1DT1H = 2010-11-07 02:30:00 EST America/New_York 94ba9 2010-11-06 04:30:00 EDT America/New_York + PT25H = 2010-11-07 04:30:00 EST America/New_York 95ba10 2010-11-06 03:30:00 EDT America/New_York + P1D = 2010-11-07 03:30:00 EST America/New_York 96ba11 2010-11-06 02:30:00 EDT America/New_York + P1D = 2010-11-07 02:30:00 EST America/New_York 97