1--TEST-- 2RFC: DateTime and Daylight Saving Time Transitions (zone type 3, fs) 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 * Forward Transitions, sub(). 14 */ 15 16$end = new DateTime('2010-03-14 03:00:00'); 17$interval_spec = 'PT1S'; 18$interval = new DateInterval($interval_spec); 19echo 'fs1 ' . $end->format($date_format) . " - $interval_spec = " 20 . $end->sub($interval)->format($date_format) . "\n"; 21 22$end = new DateTime('2010-03-14 04:30:00'); 23$interval_spec = 'P1D'; 24$interval = new DateInterval($interval_spec); 25echo 'fs2 ' . $end->format($date_format) . " - $interval_spec = " 26 . $end->sub($interval)->format($date_format) . "\n"; 27 28$end = new DateTime('2010-03-14 03:30:00'); 29$interval_spec = 'PT22H'; 30$interval = new DateInterval($interval_spec); 31echo 'fs3 ' . $end->format($date_format) . " - $interval_spec = " 32 . $end->sub($interval)->format($date_format) . "\n"; 33 34$end = new DateTime('2010-03-14 01:30:00'); 35$interval_spec = 'PT21H'; 36$interval = new DateInterval($interval_spec); 37echo 'fs4 ' . $end->format($date_format) . " - $interval_spec = " 38 . $end->sub($interval)->format($date_format) . "\n"; 39 40$end = new DateTime('2010-03-14 01:30:00'); 41$interval_spec = 'P1D'; 42$interval = new DateInterval($interval_spec); 43echo 'fs5 ' . $end->format($date_format) . " - $interval_spec = " 44 . $end->sub($interval)->format($date_format) . "\n"; 45 46$end = new DateTime('2010-03-15 03:30:00'); 47$interval_spec = 'P1D'; 48$interval = new DateInterval($interval_spec); 49echo 'fs6 ' . $end->format($date_format) . " - $interval_spec = " 50 . $end->sub($interval)->format($date_format) . "\n"; 51 52$end = new DateTime('2010-03-15 02:30:00'); 53$interval_spec = 'P1D'; 54$interval = new DateInterval($interval_spec); 55echo 'fs7 ' . $end->format($date_format) . " - $interval_spec = " 56 . $end->sub($interval)->format($date_format) . "\n"; 57?> 58--EXPECT-- 59fs1 2010-03-14 03:00:00 EDT America/New_York - PT1S = 2010-03-14 01:59:59 EST America/New_York 60fs2 2010-03-14 04:30:00 EDT America/New_York - P1D = 2010-03-13 04:30:00 EST America/New_York 61fs3 2010-03-14 03:30:00 EDT America/New_York - PT22H = 2010-03-13 04:30:00 EST America/New_York 62fs4 2010-03-14 01:30:00 EST America/New_York - PT21H = 2010-03-13 04:30:00 EST America/New_York 63fs5 2010-03-14 01:30:00 EST America/New_York - P1D = 2010-03-13 01:30:00 EST America/New_York 64fs6 2010-03-15 03:30:00 EDT America/New_York - P1D = 2010-03-14 03:30:00 EDT America/New_York 65fs7 2010-03-15 02:30:00 EDT America/New_York - P1D = 2010-03-14 03:30:00 EDT America/New_York 66