1--TEST-- 2date_create() with large relative offsets 3--FILE-- 4<?php 5 6date_default_timezone_set('UTC'); 7 8if (!defined('PHP_INT_MIN')) { 9 define('PHP_INT_MIN', intval(-PHP_INT_MAX - 1)); 10} 11 12$base_time = '28 Feb 2008 12:00:00'; 13 14// Most offsets tested in strtotime-relative.phpt. These are tests for dates outside the 32-bit range. 15$offsets = array( 16 // around 10 leap year periods (4000 years) in days 17 '1460000 days', 18 '1460969 days', 19 '1460970 days', 20 '1460971 days', 21 '1462970 days', 22 23 // around 1 leap year period in years 24 '398 years', 25 '399 years', 26 '400 years', 27 '401 years', 28 29 // around 40000 years 30 '39755 years', 31 '39999 years', 32 '40000 years', 33 '40001 years', 34 '41010 years', 35 36 // bigger than int (32-bit) 37 '10000000000 seconds', 38 '10000000000 minutes', 39 '10000000000 hours', 40 '10000000000 days', 41 '10000000000 months', 42 '10000000000 years', 43); 44 45foreach ($offsets AS $offset) { 46 foreach (array('+', '-') AS $direction) { 47 $dt = date_create("$base_time $direction$offset"); 48 echo "$direction$offset: " . date_format($dt, DATE_ISO8601) . "\n"; 49 } 50} 51 52?> 53--EXPECT-- 54+1460000 days: 6005-07-03T12:00:00+0000 55-1460000 days: -1990-10-25T12:00:00+0000 56+1460969 days: 6008-02-27T12:00:00+0000 57-1460969 days: -1992-02-29T12:00:00+0000 58+1460970 days: 6008-02-28T12:00:00+0000 59-1460970 days: -1992-02-28T12:00:00+0000 60+1460971 days: 6008-02-29T12:00:00+0000 61-1460971 days: -1992-02-27T12:00:00+0000 62+1462970 days: 6013-08-20T12:00:00+0000 63-1462970 days: -1998-09-07T12:00:00+0000 64+398 years: 2406-02-28T12:00:00+0000 65-398 years: 1610-02-28T12:00:00+0000 66+399 years: 2407-02-28T12:00:00+0000 67-399 years: 1609-02-28T12:00:00+0000 68+400 years: 2408-02-28T12:00:00+0000 69-400 years: 1608-02-28T12:00:00+0000 70+401 years: 2409-02-28T12:00:00+0000 71-401 years: 1607-02-28T12:00:00+0000 72+39755 years: 41763-02-28T12:00:00+0000 73-39755 years: -37747-02-28T12:00:00+0000 74+39999 years: 42007-02-28T12:00:00+0000 75-39999 years: -37991-02-28T12:00:00+0000 76+40000 years: 42008-02-28T12:00:00+0000 77-40000 years: -37992-02-28T12:00:00+0000 78+40001 years: 42009-02-28T12:00:00+0000 79-40001 years: -37993-02-28T12:00:00+0000 80+41010 years: 43018-02-28T12:00:00+0000 81-41010 years: -39002-02-28T12:00:00+0000 82+10000000000 seconds: 2325-01-18T05:46:40+0000 83-10000000000 seconds: 1691-04-09T18:13:20+0000 84+10000000000 minutes: 21021-05-27T22:40:00+0000 85-10000000000 minutes: -17006-12-01T01:20:00+0000 86+10000000000 hours: 1142802-09-30T04:00:00+0000 87-10000000000 hours: -1138787-07-28T20:00:00+0000 88+10000000000 days: 27381078-03-25T12:00:00+0000 89-10000000000 days: -27377062-02-02T12:00:00+0000 90+10000000000 months: 833335341-06-28T12:00:00+0000 91-10000000000 months: -833331326-10-28T12:00:00+0000 92+10000000000 years: 10000002008-02-28T12:00:00+0000 93-10000000000 years: -9999997992-02-28T12:00:00+0000 94