1
0
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:
Derick Rethans
2005-07-21 10:09:40 +00:00
parent e4b1fb6455
commit 8a3d3aefbb
2 changed files with 57 additions and 0 deletions

View File

@@ -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:

View 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