Browse Source

- 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.
PHP-5.1
Derick Rethans 21 years ago
parent
commit
8a3d3aefbb
  1. 5
      ext/date/php_date.c
  2. 52
      ext/date/tests/mktime-3.phpt

5
ext/date/php_date.c

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

@ -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
Loading…
Cancel
Save