From 7ea26a58bc183b7f5775d2ef31c7fa7ebbff2ecc Mon Sep 17 00:00:00 2001 From: Daniel Convissor Date: Thu, 10 Feb 2011 22:57:41 +0000 Subject: [PATCH] Add extensive tests for DateTime::diff(), add() and sub(). --- .../tests/DateTime_diff_add_sub-absolute.phpt | 29 ++ .../tests/DateTime_diff_add_sub-dates.phpt | 89 ++++++ ...ateTime_diff_add_sub-fall-type2-type2.phpt | 246 +++++++++++++++ ...ateTime_diff_add_sub-fall-type2-type3.phpt | 258 ++++++++++++++++ ...ateTime_diff_add_sub-fall-type3-type2.phpt | 260 ++++++++++++++++ ...ateTime_diff_add_sub-fall-type3-type3.phpt | 270 +++++++++++++++++ .../tests/DateTime_diff_add_sub-february.phpt | 281 ++++++++++++++++++ .../tests/DateTime_diff_add_sub-massive.phpt | 45 +++ ...eTime_diff_add_sub-spring-type2-type2.phpt | 124 ++++++++ ...eTime_diff_add_sub-spring-type2-type3.phpt | 124 ++++++++ ...eTime_diff_add_sub-spring-type3-type2.phpt | 124 ++++++++ ...eTime_diff_add_sub-spring-type3-type3.phpt | 124 ++++++++ ext/date/tests/examine_diff.inc | 78 +++++ 13 files changed, 2052 insertions(+) create mode 100644 ext/date/tests/DateTime_diff_add_sub-absolute.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-dates.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-fall-type2-type2.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-fall-type2-type3.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-fall-type3-type2.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-fall-type3-type3.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-february.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-massive.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-spring-type2-type2.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-spring-type2-type3.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-spring-type3-type2.phpt create mode 100644 ext/date/tests/DateTime_diff_add_sub-spring-type3-type3.phpt create mode 100644 ext/date/tests/examine_diff.inc diff --git a/ext/date/tests/DateTime_diff_add_sub-absolute.phpt b/ext/date/tests/DateTime_diff_add_sub-absolute.phpt new file mode 100644 index 0000000000..25e5a7db86 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-absolute.phpt @@ -0,0 +1,29 @@ +--TEST-- +DateTime::diff() add() sub() -- absolute +--CREDITS-- +Daniel Convissor +--FILE-- + +--EXPECT-- +test_absolute_7: FWD: 2009-01-14 00:00:00 EST - 2009-01-07 00:00:00 EST = **P+0Y0M7DT0H0M0S** | BACK: 2009-01-07 00:00:00 EST + P+0Y0M7DT0H0M0S = **2009-01-14 00:00:00 EST** | DAYS: **7** +test_absolute_negative_7: FWD: 2009-01-07 00:00:00 EST - 2009-01-14 00:00:00 EST = **P+0Y0M7DT0H0M0S** | BACK: 2009-01-14 00:00:00 EST - P+0Y0M7DT0H0M0S = **2009-01-07 00:00:00 EST** | DAYS: **7** diff --git a/ext/date/tests/DateTime_diff_add_sub-dates.phpt b/ext/date/tests/DateTime_diff_add_sub-dates.phpt new file mode 100644 index 0000000000..8fd7c4021b --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-dates.phpt @@ -0,0 +1,89 @@ +--TEST-- +DateTime::diff() add() sub() -- dates +--CREDITS-- +Daniel Convissor +--FILE-- + +--EXPECT-- +test__7: FWD: 2009-01-14 00:00:00 EST - 2009-01-07 00:00:00 EST = **P+0Y0M7DT0H0M0S** | BACK: 2009-01-07 00:00:00 EST + P+0Y0M7DT0H0M0S = **2009-01-14 00:00:00 EST** | DAYS: **7** +test_years_positive__7_by_0_day: FWD: 2007-02-07 00:00:00 EST - 2000-02-07 00:00:00 EST = **P+7Y0M0DT0H0M0S** | BACK: 2000-02-07 00:00:00 EST + P+7Y0M0DT0H0M0S = **2007-02-07 00:00:00 EST** | DAYS: **2557** +test_years_positive__7_by_1_day: FWD: 2007-02-08 00:00:00 EST - 2000-02-07 00:00:00 EST = **P+7Y0M1DT0H0M0S** | BACK: 2000-02-07 00:00:00 EST + P+7Y0M1DT0H0M0S = **2007-02-08 00:00:00 EST** | DAYS: **2558** +test_years_positive__6_shy_1_day: FWD: 2007-02-06 00:00:00 EST - 2000-02-07 00:00:00 EST = **P+6Y11M30DT0H0M0S** | BACK: 2000-02-07 00:00:00 EST + P+6Y11M30DT0H0M0S = **2007-02-06 00:00:00 EST** | DAYS: **2556** +test_years_positive__7_by_1_month: FWD: 2007-03-07 00:00:00 EST - 2000-02-07 00:00:00 EST = **P+7Y1M0DT0H0M0S** | BACK: 2000-02-07 00:00:00 EST + P+7Y1M0DT0H0M0S = **2007-03-07 00:00:00 EST** | DAYS: **2585** +test_years_positive__6_shy_1_month: FWD: 2007-01-07 00:00:00 EST - 2000-02-07 00:00:00 EST = **P+6Y11M0DT0H0M0S** | BACK: 2000-02-07 00:00:00 EST + P+6Y11M0DT0H0M0S = **2007-01-07 00:00:00 EST** | DAYS: **2526** +test_years_positive__7_by_1_month_split_newyear: FWD: 2007-01-07 00:00:00 EST - 1999-12-07 00:00:00 EST = **P+7Y1M0DT0H0M0S** | BACK: 1999-12-07 00:00:00 EST + P+7Y1M0DT0H0M0S = **2007-01-07 00:00:00 EST** | DAYS: **2588** +test_years_positive__6_shy_1_month_split_newyear: FWD: 2006-12-07 00:00:00 EST - 2000-01-07 00:00:00 EST = **P+6Y11M0DT0H0M0S** | BACK: 2000-01-07 00:00:00 EST + P+6Y11M0DT0H0M0S = **2006-12-07 00:00:00 EST** | DAYS: **2526** +test_negative__7: FWD: 2009-01-07 00:00:00 EST - 2009-01-14 00:00:00 EST = **P-0Y0M7DT0H0M0S** | BACK: 2009-01-14 00:00:00 EST + P-0Y0M7DT0H0M0S = **2009-01-07 00:00:00 EST** | DAYS: **7** +test_years_negative__7_by_0_day: FWD: 2000-02-07 00:00:00 EST - 2007-02-07 00:00:00 EST = **P-7Y0M0DT0H0M0S** | BACK: 2007-02-07 00:00:00 EST + P-7Y0M0DT0H0M0S = **2000-02-07 00:00:00 EST** | DAYS: **2557** +test_years_negative__7_by_1_day: FWD: 2000-02-07 00:00:00 EST - 2007-02-08 00:00:00 EST = **P-7Y0M1DT0H0M0S** | BACK: 2007-02-08 00:00:00 EST + P-7Y0M1DT0H0M0S = **2000-02-07 00:00:00 EST** | DAYS: **2558** +test_years_negative__6_shy_1_day: FWD: 2000-02-07 00:00:00 EST - 2007-02-06 00:00:00 EST = **P-6Y11M28DT0H0M0S** | BACK: 2007-02-06 00:00:00 EST + P-6Y11M28DT0H0M0S = **2000-02-07 00:00:00 EST** | DAYS: **2556** +test_years_negative__7_by_1_month: FWD: 2000-02-07 00:00:00 EST - 2007-03-07 00:00:00 EST = **P-7Y1M0DT0H0M0S** | BACK: 2007-03-07 00:00:00 EST + P-7Y1M0DT0H0M0S = **2000-02-07 00:00:00 EST** | DAYS: **2585** +test_years_negative__6_shy_1_month: FWD: 2000-02-07 00:00:00 EST - 2007-01-07 00:00:00 EST = **P-6Y11M0DT0H0M0S** | BACK: 2007-01-07 00:00:00 EST + P-6Y11M0DT0H0M0S = **2000-02-07 00:00:00 EST** | DAYS: **2526** +test_years_negative__7_by_1_month_split_newyear: FWD: 1999-12-07 00:00:00 EST - 2007-01-07 00:00:00 EST = **P-7Y1M0DT0H0M0S** | BACK: 2007-01-07 00:00:00 EST + P-7Y1M0DT0H0M0S = **1999-12-07 00:00:00 EST** | DAYS: **2588** +test_years_negative__6_shy_1_month_split_newyear: FWD: 2000-01-07 00:00:00 EST - 2006-12-07 00:00:00 EST = **P-6Y11M0DT0H0M0S** | BACK: 2006-12-07 00:00:00 EST + P-6Y11M0DT0H0M0S = **2000-01-07 00:00:00 EST** | DAYS: **2526** diff --git a/ext/date/tests/DateTime_diff_add_sub-fall-type2-type2.phpt b/ext/date/tests/DateTime_diff_add_sub-fall-type2-type2.phpt new file mode 100644 index 0000000000..8b165d85f5 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-fall-type2-type2.phpt @@ -0,0 +1,246 @@ +--TEST-- +DateTime::diff() add() sub() -- fall type2 type2 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- + +--EXPECT-- +test_time_fall_type2_prev_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-10-04 02:18:48 EDT = **P+0Y1M2DT16H19M40S** | BACK: 2010-10-04 02:18:48 EDT + P+0Y1M2DT16H19M40S = **2010-11-06 18:38:28 EDT** | DAYS: **33** +test_time_fall_type2_prev_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT5H31M52S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT5H31M52S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_prev_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT6H34M5S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT6H34M5S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_prev_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT7H36M16S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT7H36M16S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_prev_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT9H38M27S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT9H38M27S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_prev_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M2DT1H21M31S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EST** | DAYS: **2** +test_time_fall_type2_dt_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 00:10:20 EDT = **P-0Y0M0DT5H31M52S** | BACK: 2010-11-07 00:10:20 EDT + P-0Y0M0DT5H31M52S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_dt_type2_dt: FWD: 2010-11-07 00:15:35 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT0H5M15S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT0H5M15S = **2010-11-07 00:15:35 EDT** | DAYS: **0** +test_time_fall_type2_dt_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT1H2M13S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT1H2M13S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_dt_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT2H4M24S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT2H4M24S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_dt_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT4H6M35S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT4H6M35S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_dt_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M1DT20H49M39S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M1DT20H49M39S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_redodt_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT6H34M5S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT6H34M5S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_redodt_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT1H2M13S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT1H2M13S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_redodt_type2_redodt: FWD: 2010-11-07 01:15:35 EDT - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT0H3M2S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT0H3M2S = **2010-11-07 01:15:35 EDT** | DAYS: **0** +test_time_fall_type2_redodt_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT1H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_redodt_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT3H4M22S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT3H4M22S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_redodt_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M1DT19H47M26S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M1DT19H47M26S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_redost_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT7H36M16S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT7H36M16S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_redost_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT2H4M24S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT2H4M24S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_redost_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT1H2M11S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_redost_type2_redost: FWD: 2010-11-07 01:16:54 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT0H2M10S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT0H2M10S = **2010-11-07 01:16:54 EST** | DAYS: **0** +test_time_fall_type2_redost_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT2H2M11S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT2H2M11S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_redost_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:14:44 EST = **P+0Y0M1DT18H45M15S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M1DT18H45M15S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_st_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT9H38M27S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT9H38M27S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_st_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT4H6M35S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT4H6M35S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_st_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT3H4M22S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT3H4M22S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_st_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 03:16:55 EST = **P-0Y0M0DT2H2M11S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT2H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_st_type2_st: FWD: 2010-11-07 05:19:56 EST - 2010-11-07 03:16:55 EST = **P+0Y0M0DT2H3M1S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M0DT2H3M1S = **2010-11-07 05:19:56 EST** | DAYS: **0** +test_time_fall_type2_st_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 03:16:55 EST = **P+0Y0M1DT16H43M4S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M1DT16H43M4S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_post_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M2DT1H21M31S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EDT** | DAYS: **2** +test_time_fall_type2_post_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT20H49M39S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT20H49M39S = **2010-11-07 00:10:20 EDT** | DAYS: **1** +test_time_fall_type2_post_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT19H47M26S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT19H47M26S = **2010-11-07 01:12:33 EDT** | DAYS: **1** +test_time_fall_type2_post_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT18H45M15S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT18H45M15S = **2010-11-07 01:14:44 EST** | DAYS: **1** +test_time_fall_type2_post_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT16H43M4S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT16H43M4S = **2010-11-07 03:16:55 EST** | DAYS: **1** +test_time_fall_type2_post_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-08 18:57:55 EST = **P+0Y0M0DT1H2M4S** | BACK: 2010-11-08 18:57:55 EST + P+0Y0M0DT1H2M4S = **2010-11-08 19:59:59 EST** | DAYS: **0** diff --git a/ext/date/tests/DateTime_diff_add_sub-fall-type2-type3.phpt b/ext/date/tests/DateTime_diff_add_sub-fall-type2-type3.phpt new file mode 100644 index 0000000000..61eb406684 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-fall-type2-type3.phpt @@ -0,0 +1,258 @@ +--TEST-- +DateTime::diff() add() sub() -- fall type2 type3 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- +setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +examine_diff($end, $start, 'P+0Y0M0DT6H34M5S', 0); + +echo "test_time_fall_type2_prev_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +examine_diff($end, $start, 'P+0Y0M0DT7H36M16S', 0); + +echo "test_time_fall_type2_prev_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +examine_diff($end, $start, 'P+0Y0M0DT9H38M27S', 0); + +echo "test_time_fall_type2_prev_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +examine_diff($end, $start, 'P+0Y0M2DT1H21M31S', 2); + +echo "test_time_fall_type2_dt_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +examine_diff($end, $start, 'P-0Y0M0DT5H31M52S', 0); + +echo "test_time_fall_type2_dt_type3_dt: "; +$end = new DateTime('2010-11-07 00:15:35'); // sp dt, zt3 +$start = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +examine_diff($end, $start, 'P+0Y0M0DT0H5M15S', 0); + +echo "test_time_fall_type2_dt_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +examine_diff($end, $start, 'P+0Y0M0DT1H2M13S', 0); + +echo "test_time_fall_type2_dt_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +examine_diff($end, $start, 'P+0Y0M0DT2H4M24S', 0); + +echo "test_time_fall_type2_dt_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +examine_diff($end, $start, 'P+0Y0M0DT4H6M35S', 0); + +echo "test_time_fall_type2_dt_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +examine_diff($end, $start, 'P+0Y0M1DT20H49M39S', 1); + +echo "test_time_fall_type2_redodt_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +examine_diff($end, $start, 'P-0Y0M0DT6H34M5S', 0); + +echo "test_time_fall_type2_redodt_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +examine_diff($end, $start, 'P-0Y0M0DT1H2M13S', 0); + +echo "test_time_fall_type2_redodt_type3_redodt: "; +$end = new DateTime('2010-11-07 01:15:35 EDT'); // sp redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +examine_diff($end, $start, 'P+0Y0M0DT0H3M2S', 0); + +echo "test_time_fall_type2_redodt_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +examine_diff($end, $start, 'P+0Y0M0DT1H2M11S', 0); + +echo "test_time_fall_type2_redodt_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +examine_diff($end, $start, 'P+0Y0M0DT3H4M22S', 0); + +echo "test_time_fall_type2_redodt_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +examine_diff($end, $start, 'P+0Y0M1DT19H47M26S', 1); + +echo "test_time_fall_type2_redost_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +examine_diff($end, $start, 'P-0Y0M0DT7H36M16S', 0); + +echo "test_time_fall_type2_redost_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +examine_diff($end, $start, 'P-0Y0M0DT2H4M24S', 0); + +echo "test_time_fall_type2_redost_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +examine_diff($end, $start, 'P-0Y0M0DT1H2M11S', 0); + +echo "test_time_fall_type2_redost_type3_redost: "; +$end = new DateTime('2010-11-07 01:16:54 EST'); // sp redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +examine_diff($end, $start, 'P+0Y0M0DT0H2M10S', 0); + +echo "test_time_fall_type2_redost_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +examine_diff($end, $start, 'P+0Y0M0DT2H2M11S', 0); + +echo "test_time_fall_type2_redost_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +examine_diff($end, $start, 'P+0Y0M1DT18H45M15S', 1); + +echo "test_time_fall_type2_st_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +examine_diff($end, $start, 'P-0Y0M0DT9H38M27S', 0); + +echo "test_time_fall_type2_st_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +examine_diff($end, $start, 'P-0Y0M0DT4H6M35S', 0); + +echo "test_time_fall_type2_st_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +examine_diff($end, $start, 'P-0Y0M0DT3H4M22S', 0); + +echo "test_time_fall_type2_st_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +examine_diff($end, $start, 'P-0Y0M0DT2H2M11S', 0); + +echo "test_time_fall_type2_st_type3_st: "; +$end = new DateTime('2010-11-07 05:19:56'); // sp st, zt3 +$start = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +examine_diff($end, $start, 'P+0Y0M0DT2H3M1S', 0); + +echo "test_time_fall_type2_st_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +examine_diff($end, $start, 'P+0Y0M1DT16H43M4S', 1); + +echo "test_time_fall_type2_post_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +examine_diff($end, $start, 'P-0Y0M2DT1H21M31S', 2); + +echo "test_time_fall_type2_post_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +examine_diff($end, $start, 'P-0Y0M1DT20H49M39S', 1); + +echo "test_time_fall_type2_post_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +examine_diff($end, $start, 'P-0Y0M1DT19H47M26S', 1); + +echo "test_time_fall_type2_post_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +examine_diff($end, $start, 'P-0Y0M1DT18H45M15S', 1); + +echo "test_time_fall_type2_post_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +examine_diff($end, $start, 'P-0Y0M1DT16H43M4S', 1); + +echo "test_time_fall_type2_post_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-08 18:57:55 EST'); // sp post, zt2 +examine_diff($end, $start, 'P+0Y0M0DT1H2M4S', 0); + +?> +--EXPECT-- +test_time_fall_type2_prev_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-10-04 02:18:48 EDT = **P+0Y1M2DT16H19M40S** | BACK: 2010-10-04 02:18:48 EDT + P+0Y1M2DT16H19M40S = **2010-11-06 18:38:28 EDT** | DAYS: **33** +test_time_fall_type2_prev_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT5H31M52S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT5H31M52S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_prev_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT6H34M5S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT6H34M5S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_prev_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT7H36M16S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT7H36M16S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_prev_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT9H38M27S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT9H38M27S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_prev_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M2DT1H21M31S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EST** | DAYS: **2** +test_time_fall_type2_dt_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 00:10:20 EDT = **P-0Y0M0DT5H31M52S** | BACK: 2010-11-07 00:10:20 EDT + P-0Y0M0DT5H31M52S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_dt_type3_dt: FWD: 2010-11-07 00:15:35 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT0H5M15S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT0H5M15S = **2010-11-07 00:15:35 EDT** | DAYS: **0** +test_time_fall_type2_dt_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT1H2M13S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT1H2M13S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_dt_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT2H4M24S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT2H4M24S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_dt_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT4H6M35S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT4H6M35S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_dt_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M1DT20H49M39S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M1DT20H49M39S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_redodt_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT6H34M5S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT6H34M5S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_redodt_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT1H2M13S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT1H2M13S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_redodt_type3_redodt: FWD: 2010-11-07 01:15:35 EDT - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT0H3M2S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT0H3M2S = **2010-11-07 01:15:35 EDT** | DAYS: **0** +test_time_fall_type2_redodt_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT1H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_redodt_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT3H4M22S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT3H4M22S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_redodt_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M1DT19H47M26S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M1DT19H47M26S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_redost_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT7H36M16S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT7H36M16S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_redost_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT2H4M24S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT2H4M24S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_redost_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT1H2M11S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_redost_type3_redost: FWD: 2010-11-07 01:16:54 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT0H2M10S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT0H2M10S = **2010-11-07 01:16:54 EST** | DAYS: **0** +test_time_fall_type2_redost_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT2H2M11S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT2H2M11S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type2_redost_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:14:44 EST = **P+0Y0M1DT18H45M15S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M1DT18H45M15S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_st_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT9H38M27S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT9H38M27S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type2_st_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT4H6M35S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT4H6M35S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type2_st_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT3H4M22S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT3H4M22S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type2_st_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 03:16:55 EST = **P-0Y0M0DT2H2M11S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT2H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type2_st_type3_st: FWD: 2010-11-07 05:19:56 EST - 2010-11-07 03:16:55 EST = **P+0Y0M0DT2H3M1S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M0DT2H3M1S = **2010-11-07 05:19:56 EST** | DAYS: **0** +test_time_fall_type2_st_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 03:16:55 EST = **P+0Y0M1DT16H43M4S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M1DT16H43M4S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type2_post_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M2DT1H21M31S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EDT** | DAYS: **2** +test_time_fall_type2_post_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT20H49M39S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT20H49M39S = **2010-11-07 00:10:20 EDT** | DAYS: **1** +test_time_fall_type2_post_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT19H47M26S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT19H47M26S = **2010-11-07 01:12:33 EDT** | DAYS: **1** +test_time_fall_type2_post_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT18H45M15S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT18H45M15S = **2010-11-07 01:14:44 EST** | DAYS: **1** +test_time_fall_type2_post_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT16H43M4S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT16H43M4S = **2010-11-07 03:16:55 EST** | DAYS: **1** +test_time_fall_type2_post_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-08 18:57:55 EST = **P+0Y0M0DT1H2M4S** | BACK: 2010-11-08 18:57:55 EST + P+0Y0M0DT1H2M4S = **2010-11-08 19:59:59 EST** | DAYS: **0** diff --git a/ext/date/tests/DateTime_diff_add_sub-fall-type3-type2.phpt b/ext/date/tests/DateTime_diff_add_sub-fall-type3-type2.phpt new file mode 100644 index 0000000000..fd57a54260 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-fall-type3-type2.phpt @@ -0,0 +1,260 @@ +--TEST-- +DateTime::diff() add() sub() -- fall type3 type2 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- +setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M0DT6H34M5S', 0); + +echo "test_time_fall_type3_prev_type2_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M0DT7H36M16S', 0); + +echo "test_time_fall_type3_prev_type2_st: "; +$end = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M0DT9H38M27S', 0); + +echo "test_time_fall_type3_prev_type2_post: "; +$end = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M2DT1H21M31S', 2); + +echo "test_time_fall_type3_dt_type2_prev: "; +$end = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P-0Y0M0DT5H31M52S', 0); + +echo "test_time_fall_type3_dt_type2_dt: "; +$end = new DateTime('2010-11-07 00:15:35 EDT'); // sp dt, zt2 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT0H5M15S', 0); + +echo "test_time_fall_type3_dt_type2_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT1H2M13S', 0); + +echo "test_time_fall_type3_dt_type2_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT2H4M24S', 0); + +echo "test_time_fall_type3_dt_type2_st: "; +$end = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT4H6M35S', 0); + +echo "test_time_fall_type3_dt_type2_post: "; +$end = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M1DT20H49M39S', 1); + +echo "test_time_fall_type3_redodt_type2_prev: "; +$end = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT6H34M5S', 0); + +echo "test_time_fall_type3_redodt_type2_dt: "; +$end = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT1H2M13S', 0); + +echo "test_time_fall_type3_redodt_type2_redodt: "; +$end = new DateTime('2010-11-07 01:15:35 EDT'); // sp redodt, zt2 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT0H3M2S', 0); + +echo "test_time_fall_type3_redodt_type2_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT1H2M11S', 0); + +echo "test_time_fall_type3_redodt_type2_st: "; +$end = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT3H4M22S', 0); + +echo "test_time_fall_type3_redodt_type2_post: "; +$end = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M1DT19H47M26S', 1); + +echo "test_time_fall_type3_redost_type2_prev: "; +$end = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT7H36M16S', 0); + +echo "test_time_fall_type3_redost_type2_dt: "; +$end = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT2H4M24S', 0); + +echo "test_time_fall_type3_redost_type2_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT1H2M11S', 0); + +echo "test_time_fall_type3_redost_type2_redost: "; +$end = new DateTime('2010-11-07 01:16:54 EST'); // sp redodt, zt2 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT0H2M10S', 0); + +echo "test_time_fall_type3_redost_type2_st: "; +$end = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT2H2M11S', 0); + +echo "test_time_fall_type3_redost_type2_post: "; +$end = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M1DT18H45M15S', 1); + +echo "test_time_fall_type3_st_type2_prev: "; +$end = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT9H38M27S', 0); + +echo "test_time_fall_type3_st_type2_dt: "; +$end = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT4H6M35S', 0); + +echo "test_time_fall_type3_st_type2_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT3H4M22S', 0); + +echo "test_time_fall_type3_st_type2_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT2H2M11S', 0); + +echo "test_time_fall_type3_st_type2_st: "; +$end = new DateTime('2010-11-07 05:19:56 EST'); // sp st, zt2 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P+0Y0M0DT2H3M1S', 0); + +echo "test_time_fall_type3_st_type2_post: "; +$end = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P+0Y0M1DT16H43M4S', 1); + +echo "test_time_fall_type3_post_type2_prev: "; +$end = new DateTime('2010-11-06 18:38:28 EDT'); // prev, zt2 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M2DT1H21M31S', 2); + +echo "test_time_fall_type3_post_type2_dt: "; +$end = new DateTime('2010-11-07 00:10:20 EDT'); // dt, zt2 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT20H49M39S', 1); + +echo "test_time_fall_type3_post_type2_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT19H47M26S', 1); + +echo "test_time_fall_type3_post_type2_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT18H45M15S', 1); + +echo "test_time_fall_type3_post_type2_st: "; +$end = new DateTime('2010-11-07 03:16:55 EST'); // st, zt2 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT16H43M4S', 1); + +echo "test_time_fall_type3_post_type2_post: "; +$end = new DateTime('2010-11-08 19:59:59 EST'); // post, zt2 +$start = new DateTime('2010-11-08 18:57:55'); // sp post, zt3 +examine_diff($end, $start, 'P+0Y0M0DT1H2M4S', 0); + +?> +--EXPECT-- +test_time_fall_type3_prev_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-10-04 02:18:48 EDT = **P+0Y1M2DT16H19M40S** | BACK: 2010-10-04 02:18:48 EDT + P+0Y1M2DT16H19M40S = **2010-11-06 18:38:28 EDT** | DAYS: **33** +test_time_fall_type3_prev_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT5H31M52S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT5H31M52S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_prev_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT6H34M5S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT6H34M5S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_prev_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT7H36M16S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT7H36M16S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_prev_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT9H38M27S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT9H38M27S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_prev_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M2DT1H21M31S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EST** | DAYS: **2** +test_time_fall_type3_dt_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 00:10:20 EDT = **P-0Y0M0DT5H31M52S** | BACK: 2010-11-07 00:10:20 EDT + P-0Y0M0DT5H31M52S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_dt_type2_dt: FWD: 2010-11-07 00:15:35 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT0H5M15S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT0H5M15S = **2010-11-07 00:15:35 EDT** | DAYS: **0** +test_time_fall_type3_dt_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT1H2M13S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT1H2M13S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_dt_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT2H4M24S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT2H4M24S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_dt_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT4H6M35S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT4H6M35S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_dt_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M1DT20H49M39S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M1DT20H49M39S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_redodt_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT6H34M5S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT6H34M5S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_redodt_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT1H2M13S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT1H2M13S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_redodt_type2_redodt: FWD: 2010-11-07 01:15:35 EDT - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT0H3M2S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT0H3M2S = **2010-11-07 01:15:35 EDT** | DAYS: **0** +test_time_fall_type3_redodt_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT1H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_redodt_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT3H4M22S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT3H4M22S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_redodt_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M1DT19H47M26S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M1DT19H47M26S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_redost_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT7H36M16S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT7H36M16S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_redost_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT2H4M24S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT2H4M24S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_redost_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT1H2M11S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_redost_type2_redost: FWD: 2010-11-07 01:16:54 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT0H2M10S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT0H2M10S = **2010-11-07 01:16:54 EST** | DAYS: **0** +test_time_fall_type3_redost_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT2H2M11S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT2H2M11S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_redost_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:14:44 EST = **P+0Y0M1DT18H45M15S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M1DT18H45M15S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_st_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT9H38M27S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT9H38M27S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_st_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT4H6M35S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT4H6M35S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_st_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT3H4M22S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT3H4M22S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_st_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 03:16:55 EST = **P-0Y0M0DT2H2M11S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT2H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_st_type2_st: FWD: 2010-11-07 05:19:56 EST - 2010-11-07 03:16:55 EST = **P+0Y0M0DT2H3M1S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M0DT2H3M1S = **2010-11-07 05:19:56 EST** | DAYS: **0** +test_time_fall_type3_st_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 03:16:55 EST = **P+0Y0M1DT16H43M4S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M1DT16H43M4S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_post_type2_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M2DT1H21M31S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EDT** | DAYS: **2** +test_time_fall_type3_post_type2_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT20H49M39S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT20H49M39S = **2010-11-07 00:10:20 EDT** | DAYS: **1** +test_time_fall_type3_post_type2_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT19H47M26S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT19H47M26S = **2010-11-07 01:12:33 EDT** | DAYS: **1** +test_time_fall_type3_post_type2_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT18H45M15S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT18H45M15S = **2010-11-07 01:14:44 EST** | DAYS: **1** +test_time_fall_type3_post_type2_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT16H43M4S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT16H43M4S = **2010-11-07 03:16:55 EST** | DAYS: **1** +test_time_fall_type3_post_type2_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-08 18:57:55 EST = **P+0Y0M0DT1H2M4S** | BACK: 2010-11-08 18:57:55 EST + P+0Y0M0DT1H2M4S = **2010-11-08 19:59:59 EST** | DAYS: **0** diff --git a/ext/date/tests/DateTime_diff_add_sub-fall-type3-type3.phpt b/ext/date/tests/DateTime_diff_add_sub-fall-type3-type3.phpt new file mode 100644 index 0000000000..9aac2f1691 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-fall-type3-type3.phpt @@ -0,0 +1,270 @@ +--TEST-- +DateTime::diff() add() sub() -- fall type3 type3 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- +setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M0DT6H34M5S', 0); + +echo "test_time_fall_type3_prev_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M0DT7H36M16S', 0); + +echo "test_time_fall_type3_prev_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M0DT9H38M27S', 0); + +echo "test_time_fall_type3_prev_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +examine_diff($end, $start, 'P+0Y0M2DT1H21M31S', 2); + +echo "test_time_fall_type3_dt_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P-0Y0M0DT5H31M52S', 0); + +echo "test_time_fall_type3_dt_type3_dt: "; +$end = new DateTime('2010-11-07 00:15:35'); // sp dt, zt3 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT0H5M15S', 0); + +echo "test_time_fall_type3_dt_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT1H2M13S', 0); + +echo "test_time_fall_type3_dt_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT2H4M24S', 0); + +echo "test_time_fall_type3_dt_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M0DT4H6M35S', 0); + +echo "test_time_fall_type3_dt_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +examine_diff($end, $start, 'P+0Y0M1DT20H49M39S', 1); + +echo "test_time_fall_type3_redodt_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT6H34M5S', 0); + +echo "test_time_fall_type3_redodt_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT1H2M13S', 0); + +echo "test_time_fall_type3_redodt_type3_redodt: "; +$end = new DateTime('2010-11-07 01:15:35 EDT'); // sp redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT0H3M2S', 0); + +echo "test_time_fall_type3_redodt_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT1H2M11S', 0); + +echo "test_time_fall_type3_redodt_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT3H4M22S', 0); + +echo "test_time_fall_type3_redodt_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M1DT19H47M26S', 1); + +echo "test_time_fall_type3_redost_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT7H36M16S', 0); + +echo "test_time_fall_type3_redost_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT2H4M24S', 0); + +echo "test_time_fall_type3_redost_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P-0Y0M0DT1H2M11S', 0); + +echo "test_time_fall_type3_redost_type3_redost: "; +$end = new DateTime('2010-11-07 01:16:54 EST'); // sp redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT0H2M10S', 0); + +echo "test_time_fall_type3_redost_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M0DT2H2M11S', 0); + +echo "test_time_fall_type3_redost_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$start->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +examine_diff($end, $start, 'P+0Y0M1DT18H45M15S', 1); + +echo "test_time_fall_type3_st_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT9H38M27S', 0); + +echo "test_time_fall_type3_st_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT4H6M35S', 0); + +echo "test_time_fall_type3_st_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT3H4M22S', 0); + +echo "test_time_fall_type3_st_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P-0Y0M0DT2H2M11S', 0); + +echo "test_time_fall_type3_st_type3_st: "; +$end = new DateTime('2010-11-07 05:19:56'); // sp st, zt3 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P+0Y0M0DT2H3M1S', 0); + +echo "test_time_fall_type3_st_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-07 03:16:55'); // st, zt3 +examine_diff($end, $start, 'P+0Y0M1DT16H43M4S', 1); + +echo "test_time_fall_type3_post_type3_prev: "; +$end = new DateTime('2010-11-06 18:38:28'); // prev, zt3 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M2DT1H21M31S', 2); + +echo "test_time_fall_type3_post_type3_dt: "; +$end = new DateTime('2010-11-07 00:10:20'); // dt, zt3 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT20H49M39S', 1); + +echo "test_time_fall_type3_post_type3_redodt: "; +$end = new DateTime('2010-11-07 01:12:33 EDT'); // redodt, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT19H47M26S', 1); + +echo "test_time_fall_type3_post_type3_redost: "; +$end = new DateTime('2010-11-07 01:14:44 EST'); // redost, zt2 +$end->setTimezone(new DateTimeZone('America/New_York')); // zt2 -> zt3 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT18H45M15S', 1); + +echo "test_time_fall_type3_post_type3_st: "; +$end = new DateTime('2010-11-07 03:16:55'); // st, zt3 +$start = new DateTime('2010-11-08 19:59:59'); // post, zt3 +examine_diff($end, $start, 'P-0Y0M1DT16H43M4S', 1); + +echo "test_time_fall_type3_post_type3_post: "; +$end = new DateTime('2010-11-08 19:59:59'); // post, zt3 +$start = new DateTime('2010-11-08 18:57:55'); // sp post, zt3 +examine_diff($end, $start, 'P+0Y0M0DT1H2M4S', 0); + +?> +--EXPECT-- +test_time_fall_type3_prev_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-10-04 02:18:48 EDT = **P+0Y1M2DT16H19M40S** | BACK: 2010-10-04 02:18:48 EDT + P+0Y1M2DT16H19M40S = **2010-11-06 18:38:28 EDT** | DAYS: **33** +test_time_fall_type3_prev_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT5H31M52S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT5H31M52S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_prev_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT6H34M5S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT6H34M5S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_prev_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT7H36M16S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT7H36M16S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_prev_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M0DT9H38M27S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M0DT9H38M27S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_prev_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-06 18:38:28 EDT = **P+0Y0M2DT1H21M31S** | BACK: 2010-11-06 18:38:28 EDT + P+0Y0M2DT1H21M31S = **2010-11-08 19:59:59 EST** | DAYS: **2** +test_time_fall_type3_dt_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 00:10:20 EDT = **P-0Y0M0DT5H31M52S** | BACK: 2010-11-07 00:10:20 EDT + P-0Y0M0DT5H31M52S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_dt_type3_dt: FWD: 2010-11-07 00:15:35 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT0H5M15S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT0H5M15S = **2010-11-07 00:15:35 EDT** | DAYS: **0** +test_time_fall_type3_dt_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT1H2M13S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT1H2M13S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_dt_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT2H4M24S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT2H4M24S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_dt_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M0DT4H6M35S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M0DT4H6M35S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_dt_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 00:10:20 EDT = **P+0Y0M1DT20H49M39S** | BACK: 2010-11-07 00:10:20 EDT + P+0Y0M1DT20H49M39S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_redodt_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT6H34M5S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT6H34M5S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_redodt_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:12:33 EDT = **P-0Y0M0DT1H2M13S** | BACK: 2010-11-07 01:12:33 EDT + P-0Y0M0DT1H2M13S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_redodt_type3_redodt: FWD: 2010-11-07 01:15:35 EDT - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT0H3M2S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT0H3M2S = **2010-11-07 01:15:35 EDT** | DAYS: **0** +test_time_fall_type3_redodt_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT1H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_redodt_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M0DT3H4M22S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M0DT3H4M22S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_redodt_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:12:33 EDT = **P+0Y0M1DT19H47M26S** | BACK: 2010-11-07 01:12:33 EDT + P+0Y0M1DT19H47M26S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_redost_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT7H36M16S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT7H36M16S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_redost_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT2H4M24S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT2H4M24S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_redost_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 01:14:44 EST = **P-0Y0M0DT1H2M11S** | BACK: 2010-11-07 01:14:44 EST + P-0Y0M0DT1H2M11S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_redost_type3_redost: FWD: 2010-11-07 01:16:54 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT0H2M10S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT0H2M10S = **2010-11-07 01:16:54 EST** | DAYS: **0** +test_time_fall_type3_redost_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-07 01:14:44 EST = **P+0Y0M0DT2H2M11S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M0DT2H2M11S = **2010-11-07 03:16:55 EST** | DAYS: **0** +test_time_fall_type3_redost_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 01:14:44 EST = **P+0Y0M1DT18H45M15S** | BACK: 2010-11-07 01:14:44 EST + P+0Y0M1DT18H45M15S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_st_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT9H38M27S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT9H38M27S = **2010-11-06 18:38:28 EDT** | DAYS: **0** +test_time_fall_type3_st_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT4H6M35S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT4H6M35S = **2010-11-07 00:10:20 EDT** | DAYS: **0** +test_time_fall_type3_st_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-07 03:16:55 EST = **P-0Y0M0DT3H4M22S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT3H4M22S = **2010-11-07 01:12:33 EDT** | DAYS: **0** +test_time_fall_type3_st_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-07 03:16:55 EST = **P-0Y0M0DT2H2M11S** | BACK: 2010-11-07 03:16:55 EST + P-0Y0M0DT2H2M11S = **2010-11-07 01:14:44 EST** | DAYS: **0** +test_time_fall_type3_st_type3_st: FWD: 2010-11-07 05:19:56 EST - 2010-11-07 03:16:55 EST = **P+0Y0M0DT2H3M1S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M0DT2H3M1S = **2010-11-07 05:19:56 EST** | DAYS: **0** +test_time_fall_type3_st_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-07 03:16:55 EST = **P+0Y0M1DT16H43M4S** | BACK: 2010-11-07 03:16:55 EST + P+0Y0M1DT16H43M4S = **2010-11-08 19:59:59 EST** | DAYS: **1** +test_time_fall_type3_post_type3_prev: FWD: 2010-11-06 18:38:28 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M2DT1H21M31S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M2DT1H21M31S = **2010-11-06 18:38:28 EDT** | DAYS: **2** +test_time_fall_type3_post_type3_dt: FWD: 2010-11-07 00:10:20 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT20H49M39S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT20H49M39S = **2010-11-07 00:10:20 EDT** | DAYS: **1** +test_time_fall_type3_post_type3_redodt: FWD: 2010-11-07 01:12:33 EDT - 2010-11-08 19:59:59 EST = **P-0Y0M1DT19H47M26S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT19H47M26S = **2010-11-07 01:12:33 EDT** | DAYS: **1** +test_time_fall_type3_post_type3_redost: FWD: 2010-11-07 01:14:44 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT18H45M15S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT18H45M15S = **2010-11-07 01:14:44 EST** | DAYS: **1** +test_time_fall_type3_post_type3_st: FWD: 2010-11-07 03:16:55 EST - 2010-11-08 19:59:59 EST = **P-0Y0M1DT16H43M4S** | BACK: 2010-11-08 19:59:59 EST + P-0Y0M1DT16H43M4S = **2010-11-07 03:16:55 EST** | DAYS: **1** +test_time_fall_type3_post_type3_post: FWD: 2010-11-08 19:59:59 EST - 2010-11-08 18:57:55 EST = **P+0Y0M0DT1H2M4S** | BACK: 2010-11-08 18:57:55 EST + P+0Y0M0DT1H2M4S = **2010-11-08 19:59:59 EST** | DAYS: **0** diff --git a/ext/date/tests/DateTime_diff_add_sub-february.phpt b/ext/date/tests/DateTime_diff_add_sub-february.phpt new file mode 100644 index 0000000000..5a2f9d40b2 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-february.phpt @@ -0,0 +1,281 @@ +--TEST-- +DateTime::diff() add() sub() -- february +--CREDITS-- +Daniel Convissor +--FILE-- + +--EXPECT-- +test_bug_49081__1: FWD: 2010-03-31 00:00:00 EDT - 2010-03-01 00:00:00 EST = **P+0Y0M30DT0H0M0S** | BACK: 2010-03-01 00:00:00 EST + P+0Y0M30DT0H0M0S = **2010-03-31 00:00:00 EDT** | DAYS: **30** +test_bug_49081__2: FWD: 2010-04-01 00:00:00 EDT - 2010-03-01 00:00:00 EST = **P+0Y1M0DT0H0M0S** | BACK: 2010-03-01 00:00:00 EST + P+0Y1M0DT0H0M0S = **2010-04-01 00:00:00 EDT** | DAYS: **31** +test_bug_49081__3: FWD: 2010-04-01 00:00:00 EDT - 2010-03-31 00:00:00 EDT = **P+0Y0M1DT0H0M0S** | BACK: 2010-03-31 00:00:00 EDT + P+0Y0M1DT0H0M0S = **2010-04-01 00:00:00 EDT** | DAYS: **1** +test_bug_49081__4: FWD: 2010-04-29 00:00:00 EDT - 2010-03-31 00:00:00 EDT = **P+0Y0M29DT0H0M0S** | BACK: 2010-03-31 00:00:00 EDT + P+0Y0M29DT0H0M0S = **2010-04-29 00:00:00 EDT** | DAYS: **29** +test_bug_49081__5: FWD: 2010-04-30 00:00:00 EDT - 2010-03-31 00:00:00 EDT = **P+0Y0M30DT0H0M0S** | BACK: 2010-03-31 00:00:00 EDT + P+0Y0M30DT0H0M0S = **2010-04-30 00:00:00 EDT** | DAYS: **30** +test_bug_49081__6: FWD: 2010-04-30 00:00:00 EDT - 2010-03-30 00:00:00 EDT = **P+0Y1M0DT0H0M0S** | BACK: 2010-03-30 00:00:00 EDT + P+0Y1M0DT0H0M0S = **2010-04-30 00:00:00 EDT** | DAYS: **31** +test_bug_49081__7: FWD: 2010-04-30 00:00:00 EDT - 2010-03-29 00:00:00 EDT = **P+0Y1M1DT0H0M0S** | BACK: 2010-03-29 00:00:00 EDT + P+0Y1M1DT0H0M0S = **2010-04-30 00:00:00 EDT** | DAYS: **32** +test_bug_49081__8: FWD: 2010-01-29 00:00:00 EST - 2010-01-01 00:00:00 EST = **P+0Y0M28DT0H0M0S** | BACK: 2010-01-01 00:00:00 EST + P+0Y0M28DT0H0M0S = **2010-01-29 00:00:00 EST** | DAYS: **28** +test_bug_49081__9: FWD: 2010-01-30 00:00:00 EST - 2010-01-01 00:00:00 EST = **P+0Y0M29DT0H0M0S** | BACK: 2010-01-01 00:00:00 EST + P+0Y0M29DT0H0M0S = **2010-01-30 00:00:00 EST** | DAYS: **29** +test_bug_49081__10: FWD: 2010-01-31 00:00:00 EST - 2010-01-01 00:00:00 EST = **P+0Y0M30DT0H0M0S** | BACK: 2010-01-01 00:00:00 EST + P+0Y0M30DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **30** +test_bug_49081__11: FWD: 2010-02-01 00:00:00 EST - 2010-01-01 00:00:00 EST = **P+0Y1M0DT0H0M0S** | BACK: 2010-01-01 00:00:00 EST + P+0Y1M0DT0H0M0S = **2010-02-01 00:00:00 EST** | DAYS: **31** +test_bug_49081__12: FWD: 2010-02-01 00:00:00 EST - 2010-01-31 00:00:00 EST = **P+0Y0M1DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y0M1DT0H0M0S = **2010-02-01 00:00:00 EST** | DAYS: **1** +test_bug_49081__13: FWD: 2010-02-27 00:00:00 EST - 2010-01-31 00:00:00 EST = **P+0Y0M27DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y0M27DT0H0M0S = **2010-02-27 00:00:00 EST** | DAYS: **27** +test_bug_49081__14: FWD: 2010-02-28 00:00:00 EST - 2010-01-31 00:00:00 EST = **P+0Y0M28DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y0M28DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **28** +test_bug_49081__15: FWD: 2010-02-28 00:00:00 EST - 2010-01-30 00:00:00 EST = **P+0Y0M29DT0H0M0S** | BACK: 2010-01-30 00:00:00 EST + P+0Y0M29DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **29** +test_bug_49081__16: FWD: 2010-02-28 00:00:00 EST - 2010-01-29 00:00:00 EST = **P+0Y0M30DT0H0M0S** | BACK: 2010-01-29 00:00:00 EST + P+0Y0M30DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **30** +test_bug_49081__17: FWD: 2010-02-28 00:00:00 EST - 2010-01-28 00:00:00 EST = **P+0Y1M0DT0H0M0S** | BACK: 2010-01-28 00:00:00 EST + P+0Y1M0DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **31** +test_bug_49081__18: FWD: 2010-02-28 00:00:00 EST - 2010-01-27 00:00:00 EST = **P+0Y1M1DT0H0M0S** | BACK: 2010-01-27 00:00:00 EST + P+0Y1M1DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **32** +test_bug_49081__19: FWD: 2010-03-01 00:00:00 EST - 2010-01-01 00:00:00 EST = **P+0Y2M0DT0H0M0S** | BACK: 2010-01-01 00:00:00 EST + P+0Y2M0DT0H0M0S = **2010-03-01 00:00:00 EST** | DAYS: **59** +test_bug_49081__20: FWD: 2010-03-01 00:00:00 EST - 2010-01-31 00:00:00 EST = **P+0Y0M29DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y0M29DT0H0M0S = **2010-03-01 00:00:00 EST** | DAYS: **29** +test_bug_49081__21: FWD: 2010-03-27 00:00:00 EDT - 2010-01-31 00:00:00 EST = **P+0Y1M24DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y1M24DT0H0M0S = **2010-03-27 00:00:00 EDT** | DAYS: **55** +test_bug_49081__22: FWD: 2010-03-28 00:00:00 EDT - 2010-01-31 00:00:00 EST = **P+0Y1M25DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y1M25DT0H0M0S = **2010-03-28 00:00:00 EDT** | DAYS: **56** +test_bug_49081__23: FWD: 2010-03-29 00:00:00 EDT - 2010-01-31 00:00:00 EST = **P+0Y1M26DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y1M26DT0H0M0S = **2010-03-29 00:00:00 EDT** | DAYS: **57** +test_bug_49081__24: FWD: 2010-03-30 00:00:00 EDT - 2010-01-31 00:00:00 EST = **P+0Y1M27DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y1M27DT0H0M0S = **2010-03-30 00:00:00 EDT** | DAYS: **58** +test_bug_49081__25: FWD: 2010-03-31 00:00:00 EDT - 2010-01-31 00:00:00 EST = **P+0Y2M0DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P+0Y2M0DT0H0M0S = **2010-03-31 00:00:00 EDT** | DAYS: **59** +test_bug_49081__26: FWD: 2010-03-31 00:00:00 EDT - 2010-01-30 00:00:00 EST = **P+0Y2M1DT0H0M0S** | BACK: 2010-01-30 00:00:00 EST + P+0Y2M1DT0H0M0S = **2010-03-31 00:00:00 EDT** | DAYS: **60** +test_bug_49081__27: FWD: 2009-01-31 00:00:00 EST - 2009-01-01 00:00:00 EST = **P+0Y0M30DT0H0M0S** | BACK: 2009-01-01 00:00:00 EST + P+0Y0M30DT0H0M0S = **2009-01-31 00:00:00 EST** | DAYS: **30** +test_bug_49081__28: FWD: 2010-03-27 00:00:00 EDT - 2010-02-28 00:00:00 EST = **P+0Y0M27DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P+0Y0M27DT0H0M0S = **2010-03-27 00:00:00 EDT** | DAYS: **27** +test_bug_49081__29: FWD: 2010-03-28 00:00:00 EDT - 2010-02-28 00:00:00 EST = **P+0Y1M0DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P+0Y1M0DT0H0M0S = **2010-03-28 00:00:00 EDT** | DAYS: **28** +test_bug_49081__30: FWD: 2010-03-29 00:00:00 EDT - 2010-02-28 00:00:00 EST = **P+0Y1M1DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P+0Y1M1DT0H0M0S = **2010-03-29 00:00:00 EDT** | DAYS: **29** +test_bug_49081__31: FWD: 2010-03-27 00:00:00 EDT - 2010-02-27 00:00:00 EST = **P+0Y1M0DT0H0M0S** | BACK: 2010-02-27 00:00:00 EST + P+0Y1M0DT0H0M0S = **2010-03-27 00:00:00 EDT** | DAYS: **28** +test_bug_49081__32: FWD: 2010-03-27 00:00:00 EDT - 2010-02-26 00:00:00 EST = **P+0Y1M1DT0H0M0S** | BACK: 2010-02-26 00:00:00 EST + P+0Y1M1DT0H0M0S = **2010-03-27 00:00:00 EDT** | DAYS: **29** +test_bug_49081_negative__1: FWD: 2010-03-01 00:00:00 EST - 2010-03-31 00:00:00 EDT = **P-0Y0M30DT0H0M0S** | BACK: 2010-03-31 00:00:00 EDT + P-0Y0M30DT0H0M0S = **2010-03-01 00:00:00 EST** | DAYS: **30** +test_bug_49081_negative__2: FWD: 2010-03-01 00:00:00 EST - 2010-04-01 00:00:00 EDT = **P-0Y1M0DT0H0M0S** | BACK: 2010-04-01 00:00:00 EDT + P-0Y1M0DT0H0M0S = **2010-03-01 00:00:00 EST** | DAYS: **31** +test_bug_49081_negative__3: FWD: 2010-03-31 00:00:00 EDT - 2010-04-01 00:00:00 EDT = **P-0Y0M1DT0H0M0S** | BACK: 2010-04-01 00:00:00 EDT + P-0Y0M1DT0H0M0S = **2010-03-31 00:00:00 EDT** | DAYS: **1** +test_bug_49081_negative__4: FWD: 2010-03-31 00:00:00 EDT - 2010-04-29 00:00:00 EDT = **P-0Y0M29DT0H0M0S** | BACK: 2010-04-29 00:00:00 EDT + P-0Y0M29DT0H0M0S = **2010-03-31 00:00:00 EDT** | DAYS: **29** +test_bug_49081_negative__5: FWD: 2010-03-31 00:00:00 EDT - 2010-04-30 00:00:00 EDT = **P-0Y0M30DT0H0M0S** | BACK: 2010-04-30 00:00:00 EDT + P-0Y0M30DT0H0M0S = **2010-03-31 00:00:00 EDT** | DAYS: **30** +test_bug_49081_negative__6: FWD: 2010-03-30 00:00:00 EDT - 2010-04-30 00:00:00 EDT = **P-0Y1M0DT0H0M0S** | BACK: 2010-04-30 00:00:00 EDT + P-0Y1M0DT0H0M0S = **2010-03-30 00:00:00 EDT** | DAYS: **31** +test_bug_49081_negative__7: FWD: 2010-03-29 00:00:00 EDT - 2010-04-30 00:00:00 EDT = **P-0Y1M1DT0H0M0S** | BACK: 2010-04-30 00:00:00 EDT + P-0Y1M1DT0H0M0S = **2010-03-29 00:00:00 EDT** | DAYS: **32** +test_bug_49081_negative__8: FWD: 2010-01-01 00:00:00 EST - 2010-01-29 00:00:00 EST = **P-0Y0M28DT0H0M0S** | BACK: 2010-01-29 00:00:00 EST + P-0Y0M28DT0H0M0S = **2010-01-01 00:00:00 EST** | DAYS: **28** +test_bug_49081_negative__9: FWD: 2010-01-01 00:00:00 EST - 2010-01-30 00:00:00 EST = **P-0Y0M29DT0H0M0S** | BACK: 2010-01-30 00:00:00 EST + P-0Y0M29DT0H0M0S = **2010-01-01 00:00:00 EST** | DAYS: **29** +test_bug_49081_negative__10: FWD: 2010-01-01 00:00:00 EST - 2010-01-31 00:00:00 EST = **P-0Y0M30DT0H0M0S** | BACK: 2010-01-31 00:00:00 EST + P-0Y0M30DT0H0M0S = **2010-01-01 00:00:00 EST** | DAYS: **30** +test_bug_49081_negative__11: FWD: 2010-01-01 00:00:00 EST - 2010-02-01 00:00:00 EST = **P-0Y1M0DT0H0M0S** | BACK: 2010-02-01 00:00:00 EST + P-0Y1M0DT0H0M0S = **2010-01-01 00:00:00 EST** | DAYS: **31** +test_bug_49081_negative__12: FWD: 2010-01-31 00:00:00 EST - 2010-02-01 00:00:00 EST = **P-0Y0M1DT0H0M0S** | BACK: 2010-02-01 00:00:00 EST + P-0Y0M1DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **1** +test_bug_49081_negative__13: FWD: 2010-01-31 00:00:00 EST - 2010-02-27 00:00:00 EST = **P-0Y0M27DT0H0M0S** | BACK: 2010-02-27 00:00:00 EST + P-0Y0M27DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **27** +test_bug_49081_negative__14: FWD: 2010-01-31 00:00:00 EST - 2010-02-28 00:00:00 EST = **P-0Y0M28DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P-0Y0M28DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **28** +test_bug_49081_negative__15: FWD: 2010-01-30 00:00:00 EST - 2010-02-28 00:00:00 EST = **P-0Y0M29DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P-0Y0M29DT0H0M0S = **2010-01-30 00:00:00 EST** | DAYS: **29** +test_bug_49081_negative__16: FWD: 2010-01-29 00:00:00 EST - 2010-02-28 00:00:00 EST = **P-0Y0M30DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P-0Y0M30DT0H0M0S = **2010-01-29 00:00:00 EST** | DAYS: **30** +test_bug_49081_negative__17: FWD: 2010-01-28 00:00:00 EST - 2010-02-28 00:00:00 EST = **P-0Y1M0DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P-0Y1M0DT0H0M0S = **2010-01-28 00:00:00 EST** | DAYS: **31** +test_bug_49081_negative__18: FWD: 2010-01-27 00:00:00 EST - 2010-02-28 00:00:00 EST = **P-0Y1M1DT0H0M0S** | BACK: 2010-02-28 00:00:00 EST + P-0Y1M1DT0H0M0S = **2010-01-27 00:00:00 EST** | DAYS: **32** +test_bug_49081_negative__19: FWD: 2010-01-01 00:00:00 EST - 2010-03-01 00:00:00 EST = **P-0Y2M0DT0H0M0S** | BACK: 2010-03-01 00:00:00 EST + P-0Y2M0DT0H0M0S = **2010-01-01 00:00:00 EST** | DAYS: **59** +test_bug_49081_negative__20: FWD: 2010-01-31 00:00:00 EST - 2010-03-01 00:00:00 EST = **P-0Y1M1DT0H0M0S** | BACK: 2010-03-01 00:00:00 EST + P-0Y1M1DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **29** +test_bug_49081_negative__21: FWD: 2010-01-31 00:00:00 EST - 2010-03-27 00:00:00 EDT = **P-0Y1M27DT0H0M0S** | BACK: 2010-03-27 00:00:00 EDT + P-0Y1M27DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **55** +test_bug_49081_negative__22: FWD: 2010-01-31 00:00:00 EST - 2010-03-28 00:00:00 EDT = **P-0Y1M28DT0H0M0S** | BACK: 2010-03-28 00:00:00 EDT + P-0Y1M28DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **56** +test_bug_49081_negative__23: FWD: 2010-01-31 00:00:00 EST - 2010-03-29 00:00:00 EDT = **P-0Y1M29DT0H0M0S** | BACK: 2010-03-29 00:00:00 EDT + P-0Y1M29DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **57** +test_bug_49081_negative__24: FWD: 2010-01-31 00:00:00 EST - 2010-03-30 00:00:00 EDT = **P-0Y1M30DT0H0M0S** | BACK: 2010-03-30 00:00:00 EDT + P-0Y1M30DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **58** +test_bug_49081_negative__25: FWD: 2010-01-31 00:00:00 EST - 2010-03-31 00:00:00 EDT = **P-0Y2M0DT0H0M0S** | BACK: 2010-03-31 00:00:00 EDT + P-0Y2M0DT0H0M0S = **2010-01-31 00:00:00 EST** | DAYS: **59** +test_bug_49081_negative__26: FWD: 2010-01-30 00:00:00 EST - 2010-03-31 00:00:00 EDT = **P-0Y2M1DT0H0M0S** | BACK: 2010-03-31 00:00:00 EDT + P-0Y2M1DT0H0M0S = **2010-01-30 00:00:00 EST** | DAYS: **60** +test_bug_49081_negative__27: FWD: 2009-01-01 00:00:00 EST - 2009-01-31 00:00:00 EST = **P-0Y0M30DT0H0M0S** | BACK: 2009-01-31 00:00:00 EST + P-0Y0M30DT0H0M0S = **2009-01-01 00:00:00 EST** | DAYS: **30** +test_bug_49081_negative__28: FWD: 2010-02-28 00:00:00 EST - 2010-03-27 00:00:00 EDT = **P-0Y0M27DT0H0M0S** | BACK: 2010-03-27 00:00:00 EDT + P-0Y0M27DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **27** +test_bug_49081_negative__29: FWD: 2010-02-28 00:00:00 EST - 2010-03-28 00:00:00 EDT = **P-0Y1M0DT0H0M0S** | BACK: 2010-03-28 00:00:00 EDT + P-0Y1M0DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **28** +test_bug_49081_negative__30: FWD: 2010-02-28 00:00:00 EST - 2010-03-29 00:00:00 EDT = **P-0Y1M1DT0H0M0S** | BACK: 2010-03-29 00:00:00 EDT + P-0Y1M1DT0H0M0S = **2010-02-28 00:00:00 EST** | DAYS: **29** +test_bug_49081_negative__31: FWD: 2010-02-27 00:00:00 EST - 2010-03-27 00:00:00 EDT = **P-0Y1M0DT0H0M0S** | BACK: 2010-03-27 00:00:00 EDT + P-0Y1M0DT0H0M0S = **2010-02-27 00:00:00 EST** | DAYS: **28** +test_bug_49081_negative__32: FWD: 2010-02-26 00:00:00 EST - 2010-03-27 00:00:00 EDT = **P-0Y1M1DT0H0M0S** | BACK: 2010-03-27 00:00:00 EDT + P-0Y1M1DT0H0M0S = **2010-02-26 00:00:00 EST** | DAYS: **29** diff --git a/ext/date/tests/DateTime_diff_add_sub-massive.phpt b/ext/date/tests/DateTime_diff_add_sub-massive.phpt new file mode 100644 index 0000000000..d9f48a0fd1 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-massive.phpt @@ -0,0 +1,45 @@ +--TEST-- +DateTime::diff() add() sub() -- massive +--CREDITS-- +Daniel Convissor +--FILE-- +setDate(333333, 1, 1); +$end->setTime(16, 18, 02); + +$start = new DateTime; +$start->setDate(-333333, 1, 1); +$start->setTime(16, 18, 02); + +examine_diff($end, $start, 'P+666666Y0M0DT0H0M0S', 243494757); + +echo "test_massive_negative: "; +$end = new DateTime; +$end->setDate(-333333, 1, 1); +$end->setTime(16, 18, 02); + +$start = new DateTime; +$start->setDate(333333, 1, 1); +$start->setTime(16, 18, 02); + +examine_diff($end, $start, 'P-666666Y0M0DT0H0M0S', 243494757); + +?> +--EXPECT-- +test_massive_positive: FWD: 333333-01-01 16:18:02 EST - -333333-01-01 16:18:02 EST = **P+666666Y0M0DT0H0M0S** | BACK: -333333-01-01 16:18:02 EST + P+666666Y0M0DT0H0M0S = **333333-01-01 16:18:02 EST** | DAYS: **243494757** +test_massive_negative: FWD: -333333-01-01 16:18:02 EST - 333333-01-01 16:18:02 EST = **P-666666Y0M0DT0H0M0S** | BACK: 333333-01-01 16:18:02 EST + P-666666Y0M0DT0H0M0S = **-333333-01-01 16:18:02 EST** | DAYS: **243494757** diff --git a/ext/date/tests/DateTime_diff_add_sub-spring-type2-type2.phpt b/ext/date/tests/DateTime_diff_add_sub-spring-type2-type2.phpt new file mode 100644 index 0000000000..2ed280e5fc --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-spring-type2-type2.phpt @@ -0,0 +1,124 @@ +--TEST-- +DateTime::diff() add() sub() -- spring type2 type2 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- + +--EXPECT-- +test_time_spring_type2_prev_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-02-11 02:18:48 EST = **P+0Y1M2DT16H19M40S** | BACK: 2010-02-11 02:18:48 EST + P+0Y1M2DT16H19M40S = **2010-03-13 18:38:28 EST** | DAYS: **30** +test_time_spring_type2_prev_type2_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-13 18:38:28 EST = **P+0Y0M0DT5H31M52S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT5H31M52S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type2_prev_type2_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M0DT7H38M27S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT7H38M27S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type2_prev_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M2DT1H21M31S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EDT** | DAYS: **2** +test_time_spring_type2_st_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 00:10:20 EST = **P-0Y0M0DT5H31M52S** | BACK: 2010-03-14 00:10:20 EST + P-0Y0M0DT5H31M52S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type2_st_type2_st: FWD: 2010-03-14 00:15:35 EST - 2010-03-14 00:10:20 EST = **P+0Y0M0DT0H5M15S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT0H5M15S = **2010-03-14 00:15:35 EST** | DAYS: **0** +test_time_spring_type2_st_type2_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M0DT2H6M35S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT2H6M35S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type2_st_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M1DT18H49M39S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M1DT18H49M39S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type2_dt_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT7H38M27S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT7H38M27S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type2_dt_type2_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT2H6M35S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT2H6M35S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type2_dt_type2_dt: FWD: 2010-03-14 05:19:56 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M0DT2H3M1S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M0DT2H3M1S = **2010-03-14 05:19:56 EDT** | DAYS: **0** +test_time_spring_type2_dt_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M1DT16H43M4S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M1DT16H43M4S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type2_post_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M2DT1H21M31S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EST** | DAYS: **2** +test_time_spring_type2_post_type2_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT18H49M39S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT18H49M39S = **2010-03-14 00:10:20 EST** | DAYS: **1** +test_time_spring_type2_post_type2_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT16H43M4S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT16H43M4S = **2010-03-14 03:16:55 EDT** | DAYS: **1** +test_time_spring_type2_post_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-15 18:57:55 EDT = **P+0Y0M0DT1H2M4S** | BACK: 2010-03-15 18:57:55 EDT + P+0Y0M0DT1H2M4S = **2010-03-15 19:59:59 EDT** | DAYS: **0** diff --git a/ext/date/tests/DateTime_diff_add_sub-spring-type2-type3.phpt b/ext/date/tests/DateTime_diff_add_sub-spring-type2-type3.phpt new file mode 100644 index 0000000000..d36dcc9464 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-spring-type2-type3.phpt @@ -0,0 +1,124 @@ +--TEST-- +DateTime::diff() add() sub() -- spring type2 type3 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- + +--EXPECT-- +test_time_spring_type2_prev_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-02-11 02:18:48 EST = **P+0Y1M2DT16H19M40S** | BACK: 2010-02-11 02:18:48 EST + P+0Y1M2DT16H19M40S = **2010-03-13 18:38:28 EST** | DAYS: **30** +test_time_spring_type2_prev_type3_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-13 18:38:28 EST = **P+0Y0M0DT5H31M52S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT5H31M52S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type2_prev_type3_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M0DT7H38M27S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT7H38M27S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type2_prev_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M2DT1H21M31S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EDT** | DAYS: **2** +test_time_spring_type2_st_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 00:10:20 EST = **P-0Y0M0DT5H31M52S** | BACK: 2010-03-14 00:10:20 EST + P-0Y0M0DT5H31M52S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type2_st_type3_st: FWD: 2010-03-14 00:15:35 EST - 2010-03-14 00:10:20 EST = **P+0Y0M0DT0H5M15S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT0H5M15S = **2010-03-14 00:15:35 EST** | DAYS: **0** +test_time_spring_type2_st_type3_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M0DT2H6M35S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT2H6M35S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type2_st_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M1DT18H49M39S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M1DT18H49M39S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type2_dt_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT7H38M27S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT7H38M27S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type2_dt_type3_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT2H6M35S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT2H6M35S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type2_dt_type3_dt: FWD: 2010-03-14 05:19:56 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M0DT2H3M1S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M0DT2H3M1S = **2010-03-14 05:19:56 EDT** | DAYS: **0** +test_time_spring_type2_dt_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M1DT16H43M4S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M1DT16H43M4S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type2_post_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M2DT1H21M31S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EST** | DAYS: **2** +test_time_spring_type2_post_type3_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT18H49M39S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT18H49M39S = **2010-03-14 00:10:20 EST** | DAYS: **1** +test_time_spring_type2_post_type3_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT16H43M4S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT16H43M4S = **2010-03-14 03:16:55 EDT** | DAYS: **1** +test_time_spring_type2_post_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-15 18:57:55 EDT = **P+0Y0M0DT1H2M4S** | BACK: 2010-03-15 18:57:55 EDT + P+0Y0M0DT1H2M4S = **2010-03-15 19:59:59 EDT** | DAYS: **0** diff --git a/ext/date/tests/DateTime_diff_add_sub-spring-type3-type2.phpt b/ext/date/tests/DateTime_diff_add_sub-spring-type3-type2.phpt new file mode 100644 index 0000000000..cf0e6a582d --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-spring-type3-type2.phpt @@ -0,0 +1,124 @@ +--TEST-- +DateTime::diff() add() sub() -- spring type3 type2 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- + +--EXPECT-- +test_time_spring_type3_prev_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-02-11 02:18:48 EST = **P+0Y1M2DT16H19M40S** | BACK: 2010-02-11 02:18:48 EST + P+0Y1M2DT16H19M40S = **2010-03-13 18:38:28 EST** | DAYS: **30** +test_time_spring_type3_prev_type2_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-13 18:38:28 EST = **P+0Y0M0DT5H31M52S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT5H31M52S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type3_prev_type2_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M0DT7H38M27S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT7H38M27S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type3_prev_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M2DT1H21M31S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EDT** | DAYS: **2** +test_time_spring_type3_st_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 00:10:20 EST = **P-0Y0M0DT5H31M52S** | BACK: 2010-03-14 00:10:20 EST + P-0Y0M0DT5H31M52S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type3_st_type2_st: FWD: 2010-03-14 00:15:35 EST - 2010-03-14 00:10:20 EST = **P+0Y0M0DT0H5M15S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT0H5M15S = **2010-03-14 00:15:35 EST** | DAYS: **0** +test_time_spring_type3_st_type2_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M0DT2H6M35S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT2H6M35S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type3_st_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M1DT18H49M39S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M1DT18H49M39S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type3_dt_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT7H38M27S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT7H38M27S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type3_dt_type2_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT2H6M35S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT2H6M35S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type3_dt_type2_dt: FWD: 2010-03-14 05:19:56 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M0DT2H3M1S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M0DT2H3M1S = **2010-03-14 05:19:56 EDT** | DAYS: **0** +test_time_spring_type3_dt_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M1DT16H43M4S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M1DT16H43M4S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type3_post_type2_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M2DT1H21M31S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EST** | DAYS: **2** +test_time_spring_type3_post_type2_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT18H49M39S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT18H49M39S = **2010-03-14 00:10:20 EST** | DAYS: **1** +test_time_spring_type3_post_type2_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT16H43M4S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT16H43M4S = **2010-03-14 03:16:55 EDT** | DAYS: **1** +test_time_spring_type3_post_type2_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-15 18:57:55 EDT = **P+0Y0M0DT1H2M4S** | BACK: 2010-03-15 18:57:55 EDT + P+0Y0M0DT1H2M4S = **2010-03-15 19:59:59 EDT** | DAYS: **0** diff --git a/ext/date/tests/DateTime_diff_add_sub-spring-type3-type3.phpt b/ext/date/tests/DateTime_diff_add_sub-spring-type3-type3.phpt new file mode 100644 index 0000000000..afb8cdaf57 --- /dev/null +++ b/ext/date/tests/DateTime_diff_add_sub-spring-type3-type3.phpt @@ -0,0 +1,124 @@ +--TEST-- +DateTime::diff() add() sub() -- spring type3 type3 +--CREDITS-- +Daniel Convissor +--XFAIL-- +PHP < 5.4 has bugs +--FILE-- + +--EXPECT-- +test_time_spring_type3_prev_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-02-11 02:18:48 EST = **P+0Y1M2DT16H19M40S** | BACK: 2010-02-11 02:18:48 EST + P+0Y1M2DT16H19M40S = **2010-03-13 18:38:28 EST** | DAYS: **30** +test_time_spring_type3_prev_type3_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-13 18:38:28 EST = **P+0Y0M0DT5H31M52S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT5H31M52S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type3_prev_type3_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M0DT7H38M27S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M0DT7H38M27S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type3_prev_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-13 18:38:28 EST = **P+0Y0M2DT1H21M31S** | BACK: 2010-03-13 18:38:28 EST + P+0Y0M2DT1H21M31S = **2010-03-15 19:59:59 EDT** | DAYS: **2** +test_time_spring_type3_st_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 00:10:20 EST = **P-0Y0M0DT5H31M52S** | BACK: 2010-03-14 00:10:20 EST + P-0Y0M0DT5H31M52S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type3_st_type3_st: FWD: 2010-03-14 00:15:35 EST - 2010-03-14 00:10:20 EST = **P+0Y0M0DT0H5M15S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT0H5M15S = **2010-03-14 00:15:35 EST** | DAYS: **0** +test_time_spring_type3_st_type3_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M0DT2H6M35S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M0DT2H6M35S = **2010-03-14 03:16:55 EDT** | DAYS: **0** +test_time_spring_type3_st_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 00:10:20 EST = **P+0Y0M1DT18H49M39S** | BACK: 2010-03-14 00:10:20 EST + P+0Y0M1DT18H49M39S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type3_dt_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT7H38M27S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT7H38M27S = **2010-03-13 18:38:28 EST** | DAYS: **0** +test_time_spring_type3_dt_type3_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-14 03:16:55 EDT = **P-0Y0M0DT2H6M35S** | BACK: 2010-03-14 03:16:55 EDT + P-0Y0M0DT2H6M35S = **2010-03-14 00:10:20 EST** | DAYS: **0** +test_time_spring_type3_dt_type3_dt: FWD: 2010-03-14 05:19:56 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M0DT2H3M1S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M0DT2H3M1S = **2010-03-14 05:19:56 EDT** | DAYS: **0** +test_time_spring_type3_dt_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-14 03:16:55 EDT = **P+0Y0M1DT16H43M4S** | BACK: 2010-03-14 03:16:55 EDT + P+0Y0M1DT16H43M4S = **2010-03-15 19:59:59 EDT** | DAYS: **1** +test_time_spring_type3_post_type3_prev: FWD: 2010-03-13 18:38:28 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M2DT1H21M31S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M2DT1H21M31S = **2010-03-13 18:38:28 EST** | DAYS: **2** +test_time_spring_type3_post_type3_st: FWD: 2010-03-14 00:10:20 EST - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT18H49M39S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT18H49M39S = **2010-03-14 00:10:20 EST** | DAYS: **1** +test_time_spring_type3_post_type3_dt: FWD: 2010-03-14 03:16:55 EDT - 2010-03-15 19:59:59 EDT = **P-0Y0M1DT16H43M4S** | BACK: 2010-03-15 19:59:59 EDT + P-0Y0M1DT16H43M4S = **2010-03-14 03:16:55 EDT** | DAYS: **1** +test_time_spring_type3_post_type3_post: FWD: 2010-03-15 19:59:59 EDT - 2010-03-15 18:57:55 EDT = **P+0Y0M0DT1H2M4S** | BACK: 2010-03-15 18:57:55 EDT + P+0Y0M0DT1H2M4S = **2010-03-15 19:59:59 EDT** | DAYS: **0** diff --git a/ext/date/tests/examine_diff.inc b/ext/date/tests/examine_diff.inc new file mode 100644 index 0000000000..35b4ae333d --- /dev/null +++ b/ext/date/tests/examine_diff.inc @@ -0,0 +1,78 @@ + + */ + +/** + * Provides a consistent interface for executing date diff tests + * + * Tests the diff() method then passes the resulting + * interval to the add()/sub() method as a double check + * + * @param string|DateTime $end_date the end date in YYYY-MM-DD format + * (can include time HH:MM:SS) or a DateTime object + * @param string|DateTime $start_date the start date in YYYY-MM-DD format + * (can include time HH:MM:SS) or a DateTime object + * @param string $expect_spec the expected result of the tests, in the + * special interval specification used for this test suite. + * This spec includes a "+" or "-" after the "P" in order to + * indicate which direction to go. + * @param int $expect_days the number of days to compare with the + * interval's "days" property + * @param bool $absolute should the result always be a positive number? + * + * @return void + */ +function examine_diff($end_date, $start_date, $expect_spec, $expect_days, $absolute = false) { + if (is_string($start_date)) { + $start = new DateTime($start_date); + } else { + $start = $start_date; + } + $start_date = $start->format('Y-m-d H:i:s T'); + + if (is_string($end_date)) { + $end = new DateTime($end_date); + } else { + $end = $end_date; + } + $end_date = $end->format('Y-m-d H:i:s T'); + + $force_sub = false; + if ($absolute) { + $tmp_interval = $start->diff($end); + if ($tmp_interval->format('%r')) { + $force_sub = true; + } + } + + $result_interval = $start->diff($end, $absolute); + $result_spec = $result_interval->format('P%R%yY%mM%dDT%hH%iM%sS'); + $result_days = $result_interval->format('%a'); + + // Also make sure add()/sub() works the same way as diff(). + if ($force_sub) { + $start->sub($result_interval); + $sign = '-'; + } else { + $start->add($result_interval); + $sign = '+'; + } + + $result_end_date = $start->format('Y-m-d H:i:s T'); + + // Leaving this here for making adjustments later. + $expect_full = "FWD: $end_date - $start_date = **$expect_spec** | " + . "BACK: $start_date $sign $expect_spec = **$end_date** | " + . "DAYS: **$expect_days**"; + // echo "$expect_full\n"; + // return; + + $result_full = "FWD: $end_date - $start_date = **$result_spec** | " + . "BACK: $start_date $sign $result_spec = **$result_end_date** | " + . "DAYS: **$result_days**"; + echo "$result_full\n"; +} -- 2.40.0