mirror of
https://github.com/php/php-src.git
synced 2026-03-28 10:12:18 +01:00
- Changed the year parameter so that 0..69 maps to 2000..2069 and 70..100 maps
to 1970..2000, which was in the original code, but not in the documentation.
This commit is contained in:
@@ -623,6 +623,11 @@ PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt)
|
||||
case 7:
|
||||
/* break intentionally missing */
|
||||
case 6:
|
||||
if (yea >= 0 && yea < 70) {
|
||||
yea += 2000;
|
||||
} else if (yea >= 70 && yea <= 100) {
|
||||
yea += 1900;
|
||||
}
|
||||
now->y = yea;
|
||||
/* break intentionally missing again */
|
||||
case 5:
|
||||
|
||||
52
ext/date/tests/mktime-3.phpt
Normal file
52
ext/date/tests/mktime-3.phpt
Normal file
@@ -0,0 +1,52 @@
|
||||
--TEST--
|
||||
mktime() [3]
|
||||
--INI--
|
||||
error_reporting=2047
|
||||
--FILE--
|
||||
<?php
|
||||
$tzs = array("America/Toronto", "Europe/Oslo");
|
||||
$years = array(0, 69, 70, 71, 99, 100, 1900, 1901, 1902, 1999, 2000, 2001);
|
||||
|
||||
foreach ($tzs as $tz) {
|
||||
echo $tz, "\n";
|
||||
date_default_timezone_set($tz);
|
||||
foreach ($years as $year) {
|
||||
printf("Y: %4d - ", $year);
|
||||
$ret = mktime(1, 1, 1, 1, 1, $year);
|
||||
if ($ret == FALSE) {
|
||||
echo "out of range\n";
|
||||
} else {
|
||||
echo date("F ".DATE_ISO8601, $ret), "\n";
|
||||
}
|
||||
}
|
||||
echo "\n";
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
America/Toronto
|
||||
Y: 0 - January 2000-01-01T01:01:01-0500
|
||||
Y: 69 - out of range
|
||||
Y: 70 - January 1970-01-01T01:01:01-0500
|
||||
Y: 71 - January 1971-01-01T01:01:01-0500
|
||||
Y: 99 - January 1999-01-01T01:01:01-0500
|
||||
Y: 100 - January 2000-01-01T01:01:01-0500
|
||||
Y: 1900 - out of range
|
||||
Y: 1901 - out of range
|
||||
Y: 1902 - January 1902-01-01T01:01:01-0500
|
||||
Y: 1999 - January 1999-01-01T01:01:01-0500
|
||||
Y: 2000 - January 2000-01-01T01:01:01-0500
|
||||
Y: 2001 - January 2001-01-01T01:01:01-0500
|
||||
|
||||
Europe/Oslo
|
||||
Y: 0 - January 2000-01-01T01:01:01+0100
|
||||
Y: 69 - out of range
|
||||
Y: 70 - January 1970-01-01T01:01:01+0100
|
||||
Y: 71 - January 1971-01-01T01:01:01+0100
|
||||
Y: 99 - January 1999-01-01T01:01:01+0100
|
||||
Y: 100 - January 2000-01-01T01:01:01+0100
|
||||
Y: 1900 - out of range
|
||||
Y: 1901 - out of range
|
||||
Y: 1902 - January 1902-01-01T01:01:01+0100
|
||||
Y: 1999 - January 1999-01-01T01:01:01+0100
|
||||
Y: 2000 - January 2000-01-01T01:01:01+0100
|
||||
Y: 2001 - January 2001-01-01T01:01:01+0100
|
||||
Reference in New Issue
Block a user