Annotation of embedaddon/php/ext/date/tests/rfc-datetime_and_daylight_saving_time-type1.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: RFC: DateTime and Daylight Saving Time Transitions (zone type 1)
! 3: --CREDITS--
! 4: Daniel Convissor <danielc@php.net>
! 5: --FILE--
! 6: <?php
! 7:
! 8: date_default_timezone_set('America/New_York');
! 9: $date_format = 'Y-m-d H:i:s e';
! 10: $interval_format = 'P%dDT%hH';
! 11:
! 12: /*
! 13: * Forward Transitions, diff().
! 14: */
! 15:
! 16: $end = new DateTime('2010-03-14 03:00:00 -0400');
! 17: $start = new DateTime('2010-03-14 01:59:59 -0500');
! 18: echo 'fd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 19: . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
! 20:
! 21: $end = new DateTime('2010-03-14 04:30:00 -0400');
! 22: $start = new DateTime('2010-03-13 04:30:00 -0500');
! 23: echo 'fd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 24: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 25:
! 26: $end = new DateTime('2010-03-14 03:30:00 -0400');
! 27: $start = new DateTime('2010-03-13 04:30:00 -0500');
! 28: echo 'fd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 29: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 30:
! 31: $end = new DateTime('2010-03-14 01:30:00 -0500');
! 32: $start = new DateTime('2010-03-13 04:30:00 -0500');
! 33: echo 'fd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 34: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 35:
! 36: $end = new DateTime('2010-03-14 01:30:00 -0500');
! 37: $start = new DateTime('2010-03-13 01:30:00 -0500');
! 38: echo 'fd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 39: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 40:
! 41: $end = new DateTime('2010-03-14 03:30:00 -0400');
! 42: $start = new DateTime('2010-03-13 03:30:00 -0500');
! 43: echo 'fd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 44: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 45:
! 46: $end = new DateTime('2010-03-14 03:30:00 -0400');
! 47: $start = new DateTime('2010-03-13 02:30:00 -0500');
! 48: echo 'fd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 49: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 50:
! 51: echo "\n";
! 52:
! 53: /*
! 54: * Forward Transitions, add().
! 55: */
! 56:
! 57: $start = new DateTime('2010-03-14 01:59:59 -0500');
! 58: $interval_spec = 'PT1S';
! 59: $interval = new DateInterval($interval_spec);
! 60: echo 'fa1 ' . $start->format($date_format) . " + $interval_spec = "
! 61: . $start->add($interval)->format($date_format) . "\n";
! 62:
! 63: $start = new DateTime('2010-03-13 04:30:00 -0500');
! 64: $interval_spec = 'P1D';
! 65: $interval = new DateInterval($interval_spec);
! 66: echo 'fa2 ' . $start->format($date_format) . " + $interval_spec = "
! 67: . $start->add($interval)->format($date_format) . "\n";
! 68:
! 69: $start = new DateTime('2010-03-13 04:30:00 -0500');
! 70: $interval_spec = 'PT22H';
! 71: $interval = new DateInterval($interval_spec);
! 72: echo 'fa3 ' . $start->format($date_format) . " + $interval_spec = "
! 73: . $start->add($interval)->format($date_format) . "\n";
! 74:
! 75: $start = new DateTime('2010-03-13 04:30:00 -0500');
! 76: $interval_spec = 'PT21H';
! 77: $interval = new DateInterval($interval_spec);
! 78: echo 'fa4 ' . $start->format($date_format) . " + $interval_spec = "
! 79: . $start->add($interval)->format($date_format) . "\n";
! 80:
! 81: $start = new DateTime('2010-03-13 01:30:00 -0500');
! 82: $interval_spec = 'P1D';
! 83: $interval = new DateInterval($interval_spec);
! 84: echo 'fa5 ' . $start->format($date_format) . " + $interval_spec = "
! 85: . $start->add($interval)->format($date_format) . "\n";
! 86:
! 87: $start = new DateTime('2010-03-13 02:30:00 -0500');
! 88: $interval_spec = 'P1D';
! 89: $interval = new DateInterval($interval_spec);
! 90: echo 'fa6 ' . $start->format($date_format) . " + $interval_spec = "
! 91: . $start->add($interval)->format($date_format) . "\n";
! 92:
! 93: echo "\n";
! 94:
! 95: /*
! 96: * Forward Transitions, sub().
! 97: */
! 98:
! 99: $end = new DateTime('2010-03-14 03:00:00 -0400');
! 100: $interval_spec = 'PT1S';
! 101: $interval = new DateInterval($interval_spec);
! 102: echo 'fs1 ' . $end->format($date_format) . " - $interval_spec = "
! 103: . $end->sub($interval)->format($date_format) . "\n";
! 104:
! 105: $end = new DateTime('2010-03-14 04:30:00 -0400');
! 106: $interval_spec = 'P1D';
! 107: $interval = new DateInterval($interval_spec);
! 108: echo 'fs2 ' . $end->format($date_format) . " - $interval_spec = "
! 109: . $end->sub($interval)->format($date_format) . "\n";
! 110:
! 111: $end = new DateTime('2010-03-14 03:30:00 -0400');
! 112: $interval_spec = 'PT22H';
! 113: $interval = new DateInterval($interval_spec);
! 114: echo 'fs3 ' . $end->format($date_format) . " - $interval_spec = "
! 115: . $end->sub($interval)->format($date_format) . "\n";
! 116:
! 117: $end = new DateTime('2010-03-14 01:30:00 -0500');
! 118: $interval_spec = 'PT21H';
! 119: $interval = new DateInterval($interval_spec);
! 120: echo 'fs4 ' . $end->format($date_format) . " - $interval_spec = "
! 121: . $end->sub($interval)->format($date_format) . "\n";
! 122:
! 123: $end = new DateTime('2010-03-14 01:30:00 -0500');
! 124: $interval_spec = 'P1D';
! 125: $interval = new DateInterval($interval_spec);
! 126: echo 'fs5 ' . $end->format($date_format) . " - $interval_spec = "
! 127: . $end->sub($interval)->format($date_format) . "\n";
! 128:
! 129: $end = new DateTime('2010-03-15 03:30:00 -0400');
! 130: $interval_spec = 'P1D';
! 131: $interval = new DateInterval($interval_spec);
! 132: echo 'fs6 ' . $end->format($date_format) . " - $interval_spec = "
! 133: . $end->sub($interval)->format($date_format) . "\n";
! 134:
! 135: $end = new DateTime('2010-03-15 02:30:00 -0400');
! 136: $interval_spec = 'P1D';
! 137: $interval = new DateInterval($interval_spec);
! 138: echo 'fs7 ' . $end->format($date_format) . " - $interval_spec = "
! 139: . $end->sub($interval)->format($date_format) . "\n";
! 140:
! 141: echo "\n";
! 142:
! 143: /*
! 144: * Backward Transitions, diff().
! 145: */
! 146:
! 147: $end = new DateTime('2010-11-07 01:00:00 -0500');
! 148: $start = new DateTime('2010-11-07 01:59:59 -0400');
! 149: echo 'bd1 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 150: . ' = ' . $start->diff($end)->format('PT%hH%iM%sS') . "\n";
! 151:
! 152: $end = new DateTime('2010-11-07 04:30:00 -0500');
! 153: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 154: echo 'bd2 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 155: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 156:
! 157: $end = new DateTime('2010-11-07 03:30:00 -0500');
! 158: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 159: echo 'bd3 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 160: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 161:
! 162: $end = new DateTime('2010-11-07 02:30:00 -0500');
! 163: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 164: echo 'bd4 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 165: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 166:
! 167: $end = new DateTime('2010-11-07 01:30:00 -0500');
! 168: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 169: echo 'bd5 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 170: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 171:
! 172: $end = new DateTime('2010-11-07 01:30:00 -0400');
! 173: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 174: echo 'bd6 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 175: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 176:
! 177: $end = new DateTime('2010-11-07 01:30:00 -0400');
! 178: $start = new DateTime('2010-11-06 01:30:00 -0400');
! 179: echo 'bd7 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 180: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 181:
! 182: $end = new DateTime('2010-11-07 01:30:00 -0500');
! 183: $start = new DateTime('2010-11-06 01:30:00 -0400');
! 184: echo 'bd8 ' . $end->format($date_format) . ' - ' . $start->format($date_format)
! 185: . ' = ' . $start->diff($end)->format($interval_format) . "\n";
! 186:
! 187: echo "\n";
! 188:
! 189: /*
! 190: * Backward Transitions, add().
! 191: */
! 192:
! 193: $start = new DateTime('2010-11-07 01:59:59 -0400');
! 194: $interval_spec = 'PT1S';
! 195: $interval = new DateInterval($interval_spec);
! 196: echo 'ba1 ' . $start->format($date_format) . " + $interval_spec = "
! 197: . $start->add($interval)->format($date_format) . "\n";
! 198:
! 199: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 200: $interval_spec = 'P1D';
! 201: $interval = new DateInterval($interval_spec);
! 202: echo 'ba2 ' . $start->format($date_format) . " + $interval_spec = "
! 203: . $start->add($interval)->format($date_format) . "\n";
! 204:
! 205: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 206: $interval_spec = 'PT24H';
! 207: $interval = new DateInterval($interval_spec);
! 208: echo 'ba3 ' . $start->format($date_format) . " + $interval_spec = "
! 209: . $start->add($interval)->format($date_format) . "\n";
! 210:
! 211: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 212: $interval_spec = 'PT23H';
! 213: $interval = new DateInterval($interval_spec);
! 214: echo 'ba4 ' . $start->format($date_format) . " + $interval_spec = "
! 215: . $start->add($interval)->format($date_format) . "\n";
! 216:
! 217: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 218: $interval_spec = 'PT22H';
! 219: $interval = new DateInterval($interval_spec);
! 220: echo 'ba5 ' . $start->format($date_format) . " + $interval_spec = "
! 221: . $start->add($interval)->format($date_format) . "\n";
! 222:
! 223: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 224: $interval_spec = 'PT21H';
! 225: $interval = new DateInterval($interval_spec);
! 226: echo 'ba6 ' . $start->format($date_format) . " + $interval_spec = "
! 227: . $start->add($interval)->format($date_format) . "\n";
! 228:
! 229: $start = new DateTime('2010-11-06 01:30:00 -0400');
! 230: $interval_spec = 'P1D';
! 231: $interval = new DateInterval($interval_spec);
! 232: echo 'ba7 ' . $start->format($date_format) . " + $interval_spec = "
! 233: . $start->add($interval)->format($date_format) . "\n";
! 234:
! 235: $start = new DateTime('2010-11-06 01:30:00 -0400');
! 236: $interval_spec = 'P1DT1H';
! 237: $interval = new DateInterval($interval_spec);
! 238: echo 'ba8 ' . $start->format($date_format) . " + $interval_spec = "
! 239: . $start->add($interval)->format($date_format) . "\n";
! 240:
! 241: $start = new DateTime('2010-11-06 04:30:00 -0400');
! 242: $interval_spec = 'PT25H';
! 243: $interval = new DateInterval($interval_spec);
! 244: echo 'ba9 ' . $start->format($date_format) . " + $interval_spec = "
! 245: . $start->add($interval)->format($date_format) . "\n";
! 246:
! 247: $start = new DateTime('2010-11-06 03:30:00 -0400');
! 248: $interval_spec = 'P1D';
! 249: $interval = new DateInterval($interval_spec);
! 250: echo 'ba10 ' . $start->format($date_format) . " + $interval_spec = "
! 251: . $start->add($interval)->format($date_format) . "\n";
! 252:
! 253: $start = new DateTime('2010-11-06 02:30:00 -0400');
! 254: $interval_spec = 'P1D';
! 255: $interval = new DateInterval($interval_spec);
! 256: echo 'ba11 ' . $start->format($date_format) . " + $interval_spec = "
! 257: . $start->add($interval)->format($date_format) . "\n";
! 258:
! 259: echo "\n";
! 260:
! 261: /*
! 262: * Backward Transitions, sub().
! 263: */
! 264:
! 265: $end = new DateTime('2010-11-07 01:00:00 -0500');
! 266: $interval_spec = 'PT1S';
! 267: $interval = new DateInterval($interval_spec);
! 268: echo 'bs1 ' . $end->format($date_format) . " - $interval_spec = "
! 269: . $end->sub($interval)->format($date_format) . "\n";
! 270:
! 271: $end = new DateTime('2010-11-07 04:30:00 -0500');
! 272: $interval_spec = 'P1D';
! 273: $interval = new DateInterval($interval_spec);
! 274: echo 'bs2 ' . $end->format($date_format) . " - $interval_spec = "
! 275: . $end->sub($interval)->format($date_format) . "\n";
! 276:
! 277: $end = new DateTime('2010-11-07 03:30:00 -0500');
! 278: $interval_spec = 'PT24H';
! 279: $interval = new DateInterval($interval_spec);
! 280: echo 'bs3 ' . $end->format($date_format) . " - $interval_spec = "
! 281: . $end->sub($interval)->format($date_format) . "\n";
! 282:
! 283: $end = new DateTime('2010-11-07 02:30:00 -0500');
! 284: $interval_spec = 'PT23H';
! 285: $interval = new DateInterval($interval_spec);
! 286: echo 'bs4 ' . $end->format($date_format) . " - $interval_spec = "
! 287: . $end->sub($interval)->format($date_format) . "\n";
! 288:
! 289: $end = new DateTime('2010-11-07 01:30:00 -0500');
! 290: $interval_spec = 'PT22H';
! 291: $interval = new DateInterval($interval_spec);
! 292: echo 'bs5 ' . $end->format($date_format) . " - $interval_spec = "
! 293: . $end->sub($interval)->format($date_format) . "\n";
! 294:
! 295: $end = new DateTime('2010-11-07 01:30:00 -0400');
! 296: $interval_spec = 'PT21H';
! 297: $interval = new DateInterval($interval_spec);
! 298: echo 'bs6 ' . $end->format($date_format) . " - $interval_spec = "
! 299: . $end->sub($interval)->format($date_format) . "\n";
! 300:
! 301: $end = new DateTime('2010-11-07 01:30:00 -0400');
! 302: $interval_spec = 'P1D';
! 303: $interval = new DateInterval($interval_spec);
! 304: echo 'bs7 ' . $end->format($date_format) . " - $interval_spec = "
! 305: . $end->sub($interval)->format($date_format) . "\n";
! 306:
! 307: $end = new DateTime('2010-11-07 01:30:00 -0500');
! 308: $interval_spec = 'P1DT1H';
! 309: $interval = new DateInterval($interval_spec);
! 310: echo 'bs8 ' . $end->format($date_format) . " - $interval_spec = "
! 311: . $end->sub($interval)->format($date_format) . "\n";
! 312:
! 313: $end = new DateTime('2010-11-07 03:30:00 -0500');
! 314: $interval_spec = 'P1D';
! 315: $interval = new DateInterval($interval_spec);
! 316: echo 'bs9 ' . $end->format($date_format) . " - $interval_spec = "
! 317: . $end->sub($interval)->format($date_format) . "\n";
! 318:
! 319: $end = new DateTime('2010-11-07 02:30:00 -0500');
! 320: $interval_spec = 'P1D';
! 321: $interval = new DateInterval($interval_spec);
! 322: echo 'bs10 ' . $end->format($date_format) . " - $interval_spec = "
! 323: . $end->sub($interval)->format($date_format) . "\n";
! 324:
! 325: ?>
! 326: --EXPECT--
! 327: fd1 2010-03-14 03:00:00 -04:00 - 2010-03-14 01:59:59 -05:00 = PT0H0M1S
! 328: fd2 2010-03-14 04:30:00 -04:00 - 2010-03-13 04:30:00 -05:00 = P0DT23H
! 329: fd3 2010-03-14 03:30:00 -04:00 - 2010-03-13 04:30:00 -05:00 = P0DT22H
! 330: fd4 2010-03-14 01:30:00 -05:00 - 2010-03-13 04:30:00 -05:00 = P0DT21H
! 331: fd5 2010-03-14 01:30:00 -05:00 - 2010-03-13 01:30:00 -05:00 = P1DT0H
! 332: fd6 2010-03-14 03:30:00 -04:00 - 2010-03-13 03:30:00 -05:00 = P0DT23H
! 333: fd7 2010-03-14 03:30:00 -04:00 - 2010-03-13 02:30:00 -05:00 = P1DT0H
! 334:
! 335: fa1 2010-03-14 01:59:59 -05:00 + PT1S = 2010-03-14 02:00:00 -05:00
! 336: fa2 2010-03-13 04:30:00 -05:00 + P1D = 2010-03-14 04:30:00 -05:00
! 337: fa3 2010-03-13 04:30:00 -05:00 + PT22H = 2010-03-14 02:30:00 -05:00
! 338: fa4 2010-03-13 04:30:00 -05:00 + PT21H = 2010-03-14 01:30:00 -05:00
! 339: fa5 2010-03-13 01:30:00 -05:00 + P1D = 2010-03-14 01:30:00 -05:00
! 340: fa6 2010-03-13 02:30:00 -05:00 + P1D = 2010-03-14 02:30:00 -05:00
! 341:
! 342: fs1 2010-03-14 03:00:00 -04:00 - PT1S = 2010-03-14 02:59:59 -04:00
! 343: fs2 2010-03-14 04:30:00 -04:00 - P1D = 2010-03-13 04:30:00 -04:00
! 344: fs3 2010-03-14 03:30:00 -04:00 - PT22H = 2010-03-13 05:30:00 -04:00
! 345: fs4 2010-03-14 01:30:00 -05:00 - PT21H = 2010-03-13 04:30:00 -05:00
! 346: fs5 2010-03-14 01:30:00 -05:00 - P1D = 2010-03-13 01:30:00 -05:00
! 347: fs6 2010-03-15 03:30:00 -04:00 - P1D = 2010-03-14 03:30:00 -04:00
! 348: fs7 2010-03-15 02:30:00 -04:00 - P1D = 2010-03-14 02:30:00 -04:00
! 349:
! 350: bd1 2010-11-07 01:00:00 -05:00 - 2010-11-07 01:59:59 -04:00 = PT0H0M1S
! 351: bd2 2010-11-07 04:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P1DT1H
! 352: bd3 2010-11-07 03:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P1DT0H
! 353: bd4 2010-11-07 02:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P0DT23H
! 354: bd5 2010-11-07 01:30:00 -05:00 - 2010-11-06 04:30:00 -04:00 = P0DT22H
! 355: bd6 2010-11-07 01:30:00 -04:00 - 2010-11-06 04:30:00 -04:00 = P0DT21H
! 356: bd7 2010-11-07 01:30:00 -04:00 - 2010-11-06 01:30:00 -04:00 = P1DT0H
! 357: bd8 2010-11-07 01:30:00 -05:00 - 2010-11-06 01:30:00 -04:00 = P1DT1H
! 358:
! 359: ba1 2010-11-07 01:59:59 -04:00 + PT1S = 2010-11-07 02:00:00 -04:00
! 360: ba2 2010-11-06 04:30:00 -04:00 + P1D = 2010-11-07 04:30:00 -04:00
! 361: ba3 2010-11-06 04:30:00 -04:00 + PT24H = 2010-11-07 04:30:00 -04:00
! 362: ba4 2010-11-06 04:30:00 -04:00 + PT23H = 2010-11-07 03:30:00 -04:00
! 363: ba5 2010-11-06 04:30:00 -04:00 + PT22H = 2010-11-07 02:30:00 -04:00
! 364: ba6 2010-11-06 04:30:00 -04:00 + PT21H = 2010-11-07 01:30:00 -04:00
! 365: ba7 2010-11-06 01:30:00 -04:00 + P1D = 2010-11-07 01:30:00 -04:00
! 366: ba8 2010-11-06 01:30:00 -04:00 + P1DT1H = 2010-11-07 02:30:00 -04:00
! 367: ba9 2010-11-06 04:30:00 -04:00 + PT25H = 2010-11-07 05:30:00 -04:00
! 368: ba10 2010-11-06 03:30:00 -04:00 + P1D = 2010-11-07 03:30:00 -04:00
! 369: ba11 2010-11-06 02:30:00 -04:00 + P1D = 2010-11-07 02:30:00 -04:00
! 370:
! 371: bs1 2010-11-07 01:00:00 -05:00 - PT1S = 2010-11-07 00:59:59 -05:00
! 372: bs2 2010-11-07 04:30:00 -05:00 - P1D = 2010-11-06 04:30:00 -05:00
! 373: bs3 2010-11-07 03:30:00 -05:00 - PT24H = 2010-11-06 03:30:00 -05:00
! 374: bs4 2010-11-07 02:30:00 -05:00 - PT23H = 2010-11-06 03:30:00 -05:00
! 375: bs5 2010-11-07 01:30:00 -05:00 - PT22H = 2010-11-06 03:30:00 -05:00
! 376: bs6 2010-11-07 01:30:00 -04:00 - PT21H = 2010-11-06 04:30:00 -04:00
! 377: bs7 2010-11-07 01:30:00 -04:00 - P1D = 2010-11-06 01:30:00 -04:00
! 378: bs8 2010-11-07 01:30:00 -05:00 - P1DT1H = 2010-11-06 00:30:00 -05:00
! 379: bs9 2010-11-07 03:30:00 -05:00 - P1D = 2010-11-06 03:30:00 -05:00
! 380: bs10 2010-11-07 02:30:00 -05:00 - P1D = 2010-11-06 02:30:00 -05:00
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>