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 01: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