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