]> granicus.if.org Git - php/commitdiff
- Changed the year parameter so that 0..69 maps to 2000..2069 and 70..100 maps
authorDerick Rethans <derick@php.net>
Thu, 21 Jul 2005 10:09:40 +0000 (10:09 +0000)
committerDerick Rethans <derick@php.net>
Thu, 21 Jul 2005 10:09:40 +0000 (10:09 +0000)
  to 1970..2000, which was in the original code, but not in the documentation.

ext/date/php_date.c
ext/date/tests/mktime-3.phpt [new file with mode: 0644]

index 1878b9106faab9ae63f05a77e59098fcaf1ac701..f5c4730ed171ba2c759f723466ba41ad9a7344d5 100644 (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:
diff --git a/ext/date/tests/mktime-3.phpt b/ext/date/tests/mktime-3.phpt
new file mode 100644 (file)
index 0000000..d4ccfba
--- /dev/null
@@ -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