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