1--TEST--
2RFC: DateTime and Daylight Saving Time Transitions (zone type 3, fs)
3--CREDITS--
4Daniel Convissor <danielc@php.net>
5--XFAIL--
6Still not quite right
7--FILE--
8<?php
9
10date_default_timezone_set('America/New_York');
11$date_format = 'Y-m-d H:i:s T e';
12$interval_format = 'P%dDT%hH';
13
14/*
15 * Forward Transitions, sub().
16 */
17
18$end   = new DateTime('2010-03-14 03:00:00');
19$interval_spec = 'PT1S';
20$interval = new DateInterval($interval_spec);
21echo 'fs1 ' . $end->format($date_format) . " - $interval_spec = "
22	. $end->sub($interval)->format($date_format) . "\n";
23
24$end   = new DateTime('2010-03-14 04:30:00');
25$interval_spec = 'P1D';
26$interval = new DateInterval($interval_spec);
27echo 'fs2 ' . $end->format($date_format) . " - $interval_spec = "
28	. $end->sub($interval)->format($date_format) . "\n";
29
30$end   = new DateTime('2010-03-14 03:30:00');
31$interval_spec = 'PT22H';
32$interval = new DateInterval($interval_spec);
33echo 'fs3 ' . $end->format($date_format) . " - $interval_spec = "
34	. $end->sub($interval)->format($date_format) . "\n";
35
36$end   = new DateTime('2010-03-14 01:30:00');
37$interval_spec = 'PT21H';
38$interval = new DateInterval($interval_spec);
39echo 'fs4 ' . $end->format($date_format) . " - $interval_spec = "
40	. $end->sub($interval)->format($date_format) . "\n";
41
42$end   = new DateTime('2010-03-14 01:30:00');
43$interval_spec = 'P1D';
44$interval = new DateInterval($interval_spec);
45echo 'fs5 ' . $end->format($date_format) . " - $interval_spec = "
46	. $end->sub($interval)->format($date_format) . "\n";
47
48$end   = new DateTime('2010-03-15 03:30:00');
49$interval_spec = 'P1D';
50$interval = new DateInterval($interval_spec);
51echo 'fs6 ' . $end->format($date_format) . " - $interval_spec = "
52	. $end->sub($interval)->format($date_format) . "\n";
53
54$end   = new DateTime('2010-03-15 02:30:00');
55$interval_spec = 'P1D';
56$interval = new DateInterval($interval_spec);
57echo 'fs7 ' . $end->format($date_format) . " - $interval_spec = "
58	. $end->sub($interval)->format($date_format) . "\n";
59?>
60--EXPECT--
61fs1 2010-03-14 03:00:00 EDT America/New_York - PT1S = 2010-03-14 01:59:59 EST America/New_York
62fs2 2010-03-14 04:30:00 EDT America/New_York - P1D = 2010-03-13 04:30:00 EST America/New_York
63fs3 2010-03-14 03:30:00 EDT America/New_York - PT22H = 2010-03-13 04:30:00 EST America/New_York
64fs4 2010-03-14 01:30:00 EST America/New_York - PT21H = 2010-03-13 04:30:00 EST America/New_York
65fs5 2010-03-14 01:30:00 EST America/New_York - P1D = 2010-03-13 01:30:00 EST America/New_York
66fs6 2010-03-15 03:30:00 EDT America/New_York - P1D = 2010-03-14 03:30:00 EDT America/New_York
67fs7 2010-03-15 02:30:00 EDT America/New_York - P1D = 2010-03-14 03:30:00 EDT America/New_York
68