]> granicus.if.org Git - php/commitdiff
Remove mktime() and gmmktime() $is_dst parameter
authorNikita Popov <nikic@php.net>
Wed, 10 Sep 2014 16:18:02 +0000 (18:18 +0200)
committerNikita Popov <nikic@php.net>
Sat, 17 Jan 2015 17:26:45 +0000 (18:26 +0100)
NEWS
UPGRADING
ext/date/php_date.c
ext/date/tests/bug27719.phpt [deleted file]
ext/date/tests/gmmktime_error.phpt
ext/date/tests/mktime-1.phpt
ext/date/tests/mktime-2.phpt [deleted file]
ext/date/tests/mktime_basic1.phpt
ext/date/tests/mktime_error.phpt
ext/date/tests/mktime_variation7.phpt [deleted file]

diff --git a/NEWS b/NEWS
index 40e6be4731f0031f566e9dee35181d6acf571d95..b47565f05151129e782445f4a2c472bb3c1fffcf 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,7 @@
 - Date:
   . Fixed day_of_week function as it could sometimes return negative values
     internally. (Derick)
+  . Removed $is_dst parameter from mktime() and gmmktime(). (Nikita)
 
 - DBA:
   . Fixed bug #62490 (dba_delete returns true on missing item (inifile)). (Mike)
index 2a7efba3c76a9a73065e198a32df3e87c27f2f21..cb976fd9cebc5b300e25716ccdd6cbac8d23f077 100644 (file)
--- a/UPGRADING
+++ b/UPGRADING
@@ -63,6 +63,9 @@ PHP X.Y UPGRADE NOTES
   . Added hybrid sorting algo zend_sort for better performance.
   . Added stable sorting algo zend_insert_sort.
 
+- Date:
+  . Removed $is_dst parameter from mktime() and gmmktime().
+
 - DBA
   . dba_delete() now returns false if the key was not found for the inifile
     handler, too.
index bd6214b7458b397723ef46ebcf5f60c09cb2cfa2..b9e109aa0966fd76f1d4905ee2e0c4e3969a38d7 100644 (file)
@@ -1482,13 +1482,13 @@ PHP_FUNCTION(strtotime)
 /* {{{ php_mktime - (gm)mktime helper */
 PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt)
 {
-       zend_long hou = 0, min = 0, sec = 0, mon = 0, day = 0, yea = 0, dst = -1;
+       zend_long hou = 0, min = 0, sec = 0, mon = 0, day = 0, yea = 0;
        timelib_time *now;
        timelib_tzinfo *tzi = NULL;
        zend_long ts, adjust_seconds = 0;
        int error;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "|lllllll", &hou, &min, &sec, &mon, &day, &yea, &dst) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "|llllll", &hou, &min, &sec, &mon, &day, &yea) == FAILURE) {
                RETURN_FALSE;
        }
        /* Initialize structure with current time */
@@ -1537,27 +1537,7 @@ PHPAPI void php_mktime(INTERNAL_FUNCTION_PARAMETERS, int gmt)
        } else {
                timelib_update_ts(now, tzi);
        }
-       /* Support for the deprecated is_dst parameter */
-       if (dst != -1) {
-               php_error_docref(NULL, E_DEPRECATED, "The is_dst parameter is deprecated");
-               if (gmt) {
-                       /* GMT never uses DST */
-                       if (dst == 1) {
-                               adjust_seconds = -3600;
-                       }
-               } else {
-                       /* Figure out is_dst for current TS */
-                       timelib_time_offset *tmp_offset;
-                       tmp_offset = timelib_get_time_zone_info(now->sse, tzi);
-                       if (dst == 1 && tmp_offset->is_dst == 0) {
-                               adjust_seconds = -3600;
-                       }
-                       if (dst == 0 && tmp_offset->is_dst == 1) {
-                               adjust_seconds = +3600;
-                       }
-                       timelib_time_offset_dtor(tmp_offset);
-               }
-       }
+
        /* Clean up and return */
        ts = timelib_date_to_int(now, &error);
        ts += adjust_seconds;
diff --git a/ext/date/tests/bug27719.phpt b/ext/date/tests/bug27719.phpt
deleted file mode 100644 (file)
index 88c1770..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
---TEST--
-Bug #27719 (mktime returns incorrect timestamp for dst days)
---INI--
-date.timezone=EST
-error_reporting=2047
---FILE--
-<?php /* $Id$ */
-       $a = mktime(0, 0, 0, 4, 4, 2004, 0);
-       $b = mktime(0, 0, 0, 4, 4, 2004, 1);
-       $c = mktime(0, 0, 0, 4, 4, 2004, -1);
-       echo "$a ".date("m/d/y h:i:s\n",$a);
-       echo "$b ".date("m/d/y h:i:s\n",$b);
-       echo "$c ".date("m/d/y h:i:s\n",$c);
-       echo "\n";
-       date_default_timezone_set('EST5EDT');  // DST not in effect
-       $a = mktime(0, 0, 0, 2, 4, 2004, 0);
-       $b = mktime(0, 0, 0, 2, 4, 2004, 1);
-       $c = mktime(0, 0, 0, 2, 4, 2004, -1);
-       echo "$a ".date("m/d/y h:i:s\n",$a);
-       echo "$b ".date("m/d/y h:i:s\n",$b);
-       echo "$c ".date("m/d/y h:i:s\n",$c);
-       echo "\n";
-       date_default_timezone_set('EST5EDT');
-       $a = mktime(0, 0, 0, 4, 4, 2004, 0);
-       $b = mktime(0, 0, 0, 4, 4, 2004, 1);
-       $c = mktime(0, 0, 0, 4, 4, 2004, -1);
-       echo "$a ".date("m/d/y h:i:s\n",$a);
-       echo "$b ".date("m/d/y h:i:s\n",$b);
-       echo "$c ".date("m/d/y h:i:s\n",$c);
-       echo "\n";
-       date_default_timezone_set('EST5EDT');
-       $a = mktime(3, 0, 0, 4, 4, 2004, 0);
-       $b = mktime(3, 0, 0, 4, 4, 2004, 1);
-       $c = mktime(3, 0, 0, 4, 4, 2004, -1);
-       echo "$a ".date("m/d/y h:i:s\n",$a);
-       echo "$b ".date("m/d/y h:i:s\n",$b);
-       echo "$c ".date("m/d/y h:i:s\n",$c);
-       echo "\n";
-       date_default_timezone_set('EST5EDT');
-       $a = mktime(0, 0, 0, 6, 4, 2004, 0);
-       $b = mktime(0, 0, 0, 6, 4, 2004, 1);
-       $c = mktime(0, 0, 0, 6, 4, 2004, -1);
-       echo "$a ".date("m/d/y h:i:s\n",$a);
-       echo "$b ".date("m/d/y h:i:s\n",$b);
-       echo "$c ".date("m/d/y h:i:s\n",$c);
-       echo "\n";
-?>
---EXPECTF--
-1081054800 04/04/04 12:00:00
-%s
-1081054800 04/04/04 12:00:00
-
-1075870800 02/04/04 12:00:00
-1075867200 02/03/04 11:00:00
-1075870800 02/04/04 12:00:00
-
-1081054800 04/04/04 12:00:00
-1081051200 04/03/04 11:00:00
-1081054800 04/04/04 12:00:00
-
-1081065600 04/04/04 04:00:00
-1081062000 04/04/04 03:00:00
-1081062000 04/04/04 03:00:00
-
-1086325200 06/04/04 01:00:00
-1086321600 06/04/04 12:00:00
-1086321600 06/04/04 12:00:00
index 9f5882da94b7c8621fc3977faa40e56e612e7e76..62e62057ea7fd06326345a017d51d98f4d08efb5 100644 (file)
@@ -18,12 +18,9 @@ $sec = 8;
 $mon = 8;
 $day = 8;
 $year = 2008;
-$extra_arg1 = 10;
-$extra_arg2 = 10;
+$extra_arg = 10;
 
-var_dump( gmmktime($hour, $min, $sec, $mon, $day, $year, $extra_arg1) );
-
-var_dump( gmmktime($hour, $min, $sec, $mon, $day, $year, $extra_arg1, $extra_arg2) );
+var_dump( gmmktime($hour, $min, $sec, $mon, $day, $year, $extra_arg) );
 ?>
 ===DONE===
 --EXPECTF--
@@ -31,9 +28,6 @@ var_dump( gmmktime($hour, $min, $sec, $mon, $day, $year, $extra_arg1, $extra_arg
 
 -- Testing gmmktime() function with more than expected no. of arguments --
 
-Deprecated: gmmktime(): The is_dst parameter is deprecated in %s on line %d
-int(1218182888)
-
-Warning: gmmktime() expects at most 7 parameters, 8 given in %s on line %d
+Warning: gmmktime() expects at most 6 parameters, 7 given in %s on line %d
 bool(false)
 ===DONE===
index 87fc0df68573de7e7470a5b16c477e03ea938129..86723e01acaff1e1991986158b7c589040ebf5a5 100644 (file)
@@ -1,30 +1,21 @@
 --TEST--
 Check for mktime with out-of-range parameters
 --INI--
-error_reporting=2047
+error_reporting=E_ALL
 --FILE--
 <?php 
-  date_default_timezone_set("Europe/Amsterdam");
-  # MacOS/X libc implementation doesn't treat out-of-range values
-  # the same way other unices do (Bug# 10686) so some extra code
-  # was added to datetime.c to take care of this 
-       echo date("Y-m-d", mktime( 12, 0, 0, 3,  0, 2000)) ."\n";
-       echo date("Y-m-d", mktime( 12, 0, 0, 3, -1, 2000)) ."\n";
-       echo date("Y-m-d", mktime( 12, 0, 0, 2, 29, 2000)) ."\n";
-       echo date("Y-m-d", mktime( 12, 0, 0, 3,  0, 2001)) ."\n";
-       echo date("Y-m-d", mktime( 12, 0, 0, 2, 29, 2001)) ."\n";
-       echo date("Y-m-d", mktime( 12, 0, 0, 0,  0, 2000)) ."\n";
 
-  putenv("TZ=Europe/London");
-  echo date("Y-m-d H:i:s", mktime(12,0,0,3,+90,2000,-1))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,3,+90,2000,0))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,3,+90,2000,1))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,5,-90,2000,-1))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,5,-90,2000,0))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,5,-90,2000,1))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,5,-1,2000,-1))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,5,-1,2000,0))."\n";
-  echo date("Y-m-d H:i:s", mktime(12,0,0,5,-1,2000,1))."\n";
+date_default_timezone_set("Europe/Amsterdam");
+# MacOS/X libc implementation doesn't treat out-of-range values
+# the same way other unices do (Bug# 10686) so some extra code
+# was added to datetime.c to take care of this 
+echo date("Y-m-d", mktime( 12, 0, 0, 3,  0, 2000)) ."\n";
+echo date("Y-m-d", mktime( 12, 0, 0, 3, -1, 2000)) ."\n";
+echo date("Y-m-d", mktime( 12, 0, 0, 2, 29, 2000)) ."\n";
+echo date("Y-m-d", mktime( 12, 0, 0, 3,  0, 2001)) ."\n";
+echo date("Y-m-d", mktime( 12, 0, 0, 2, 29, 2001)) ."\n";
+echo date("Y-m-d", mktime( 12, 0, 0, 0,  0, 2000)) ."\n";
+
 ?>
 --EXPECT--
 2000-02-29
@@ -33,12 +24,3 @@ error_reporting=2047
 2001-02-28
 2001-03-01
 1999-11-30
-2000-05-29 12:00:00
-2000-05-29 13:00:00
-2000-05-29 12:00:00
-2000-01-31 12:00:00
-2000-01-31 12:00:00
-2000-01-31 11:00:00
-2000-04-29 12:00:00
-2000-04-29 13:00:00
-2000-04-29 12:00:00
diff --git a/ext/date/tests/mktime-2.phpt b/ext/date/tests/mktime-2.phpt
deleted file mode 100644 (file)
index 931f637..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
---TEST--
-mktime() [2]
---INI--
-error_reporting=2047
---FILE--
-<?php
-$timezones = array(
-    'UTC',
-    'Europe/London'
-);
-
-foreach($timezones as $timezone)
-{
-    date_default_timezone_set($timezone);
-
-    /* status of daylight saving time unknown */
-    var_dump(mktime(0, 0, 0, 1, 1, 2002));
-    /* status of daylight saving time unknown */
-    var_dump(mktime(0, 0, 0, 1, 1, 2002, -1));
-    /* daylight saving time is not in effect */
-    var_dump(mktime(0, 0, 0, 1, 1, 2002, 0));
-    /* daylight saving time is in effect */
-    var_dump(mktime(0, 0, 0, 1, 1, 2002, 1));
-
-    /* status of daylight saving time unknown */
-    var_dump(mktime(0, 0, 0, 7, 1, 2002));
-    /* status of daylight saving time unknown */
-    var_dump(mktime(0, 0, 0, 7, 1, 2002, -1));
-    /* daylight saving time is not in effect */
-    var_dump(mktime(0, 0, 0, 7, 1, 2002, 0));
-    /* daylight saving time is in effect */
-    var_dump(mktime(0, 0, 0, 7, 1, 2002, 1));
-}
-?>
---EXPECTF--
-int(1009843200)
-int(1009843200)
-int(1009843200)
-int(%s)
-int(1025481600)
-int(1025481600)
-int(1025481600)
-int(%s)
-int(1009843200)
-int(1009843200)
-int(1009843200)
-int(1009839600)
-int(1025478000)
-int(1025478000)
-int(1025481600)
-int(1025478000)
index dc17c29b786f4d16dbf620f079b9398ad86ce317..da1f3d63bfeb0c18bd84b78aea585183a905934f 100644 (file)
@@ -20,7 +20,6 @@ $sec = 45;
 $month = 7;
 $day = 2;
 $year = 1963;
-$is_dst = 0; 
 
 var_dump( mktime($hour) );
 var_dump( mktime($hour, $minute) );
@@ -28,7 +27,6 @@ var_dump( mktime($hour, $minute, $sec) );
 var_dump( mktime($hour, $minute, $sec, $month) );
 var_dump( mktime($hour, $minute, $sec, $month, $day) );
 var_dump( mktime($hour, $minute, $sec, $month, $day, $year) );
-var_dump( mktime($hour, $minute, $sec, $month, $day, $year, $is_dst) );
 
 ?>
 ===DONE===
@@ -40,8 +38,5 @@ int(%i)
 int(%i)
 int(%i)
 int(%i)
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
 ===DONE===
 
index f517dc8aa321ecbd07624c878eb5b23aa96fcf3c..eb1cc6e19a194c61805b18d8f85d7e9a3bea6f92 100644 (file)
@@ -24,9 +24,8 @@ $sec = 45;
 $month = 7;
 $day = 2;
 $year = 1963;
-$is_dst = 0; 
 $extra_arg = 10;
-var_dump( mktime($hour, $minute, $sec, $month, $day, $year, $is_dst, $extra_arg) );
+var_dump( mktime($hour, $minute, $sec, $month, $day, $year, $extra_arg) );
 
 ?>
 ===DONE===
@@ -40,6 +39,6 @@ int(%d)
 
 -- Testing mktime() function with more than expected no. of arguments --
 
-Warning: mktime() expects at most 7 parameters, 8 given in %s on line %d
+Warning: mktime() expects at most 6 parameters, 7 given in %s on line %d
 bool(false)
 ===DONE===
diff --git a/ext/date/tests/mktime_variation7.phpt b/ext/date/tests/mktime_variation7.phpt
deleted file mode 100644 (file)
index 7a861eb..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
---TEST--
-Test mktime() function : usage variation - Passing unexpected values to seventh argument $is_dst.
---FILE--
-<?php
-/* Prototype  : int mktime  ([ int $hour= date("H")  [, int $minute= date("i")  [, int $second= date("s")  [, int $month= date("n")  [, int $day= date("j")  [, int $year= date("Y")  [, int $is_dst= -1  ]]]]]]] )
- * Description: Get Unix timestamp for a date
- * Source code: ext/date/php_date.c
- * Alias to functions: 
- */
-
-echo "*** Testing mktime() : usage variation -  unexpected values to seventh argument \$is_dst***\n";
-
-//Set the default time zone 
-date_default_timezone_set("Europe/London");
-
-//get an unset variable
-$unset_var = 10;
-unset ($unset_var);
-
-// define some classes
-class classWithToString
-{
-       public function __toString() {
-               return "Class A object";
-       }
-}
-
-class classWithoutToString
-{
-}
-
-// heredoc string
-$heredoc = <<<EOT
-hello world
-EOT;
-
-// add arrays
-$index_array = array (1, 2, 3);
-$assoc_array = array ('one' => 1, 'two' => 2);
-
-// resource
-$file_handle = fopen(__FILE__, 'r');
-
-//array of values to iterate over
-$inputs = array(
-
-      // int data
-      'int 0' => 0,
-      'int 0' => 1,
-      'int 0' => -1,
-      'int 12345' => 12345,
-      'int -12345' => -12345,
-
-      // float data
-      'float 10.5' => 10.5,
-      'float -10.5' => -10.5,
-      'float .5' => .5,
-
-      // array data
-      'empty array' => array(),
-      'int indexed array' => $index_array,
-      'associative array' => $assoc_array,
-      'nested arrays' => array('foo', $index_array, $assoc_array),
-
-      // null data
-      'uppercase NULL' => NULL,
-      'lowercase null' => null,
-
-      // boolean data
-      'lowercase true' => true,
-      'lowercase false' =>false,
-      'uppercase TRUE' =>TRUE,
-      'uppercase FALSE' =>FALSE,
-
-      // empty data
-      'empty string DQ' => "",
-      'empty string SQ' => '',
-
-      // string data
-      'string DQ' => "string",
-      'string SQ' => 'string',
-      'mixed case string' => "sTrInG",
-      'heredoc' => $heredoc,
-
-      // object data
-      'instance of classWithToString' => new classWithToString(),
-      'instance of classWithoutToString' => new classWithoutToString(),
-
-      // undefined data
-      'undefined var' => @$undefined_var,
-
-      // unset data
-      'unset var' => @$unset_var,
-      
-      // resource 
-      'resource' => $file_handle
-);
-
-$hour = 10;
-$minute = 30;
-$second = 45;
-$month = 7;
-$day = 2;
-$year = 1963;
-
-foreach($inputs as $variation =>$is_dst) {
-      echo "\n-- $variation --\n";
-      var_dump( mktime($hour, $minute, $second, $month, $day, $year, $is_dst) );
-};
-
-// closing the resource
-fclose( $file_handle );
-
-?>
-===DONE===
---EXPECTF--
-*** Testing mktime() : usage variation -  unexpected values to seventh argument $is_dst***
-
--- int 0 --
-int(%i)
-
--- int 12345 --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- int -12345 --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- float 10.5 --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(-205165755)
-
--- float -10.5 --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- float .5 --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(-205162155)
-
--- empty array --
-
-Warning: mktime() expects parameter 7 to be integer, array given in %s on line %d
-bool(false)
-
--- int indexed array --
-
-Warning: mktime() expects parameter 7 to be integer, array given in %s on line %d
-bool(false)
-
--- associative array --
-
-Warning: mktime() expects parameter 7 to be integer, array given in %s on line %d
-bool(false)
-
--- nested arrays --
-
-Warning: mktime() expects parameter 7 to be integer, array given in %s on line %d
-bool(false)
-
--- uppercase NULL --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- lowercase null --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- lowercase true --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- lowercase false --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- uppercase TRUE --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- uppercase FALSE --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- empty string DQ --
-
-Warning: mktime() expects parameter 7 to be integer, string given in %s on line %d
-bool(false)
-
--- empty string SQ --
-
-Warning: mktime() expects parameter 7 to be integer, string given in %s on line %d
-bool(false)
-
--- string DQ --
-
-Warning: mktime() expects parameter 7 to be integer, string given in %s on line %d
-bool(false)
-
--- string SQ --
-
-Warning: mktime() expects parameter 7 to be integer, string given in %s on line %d
-bool(false)
-
--- mixed case string --
-
-Warning: mktime() expects parameter 7 to be integer, string given in %s on line %d
-bool(false)
-
--- heredoc --
-
-Warning: mktime() expects parameter 7 to be integer, string given in %s on line %d
-bool(false)
-
--- instance of classWithToString --
-
-Warning: mktime() expects parameter 7 to be integer, object given in %s on line %d
-bool(false)
-
--- instance of classWithoutToString --
-
-Warning: mktime() expects parameter 7 to be integer, object given in %s on line %d
-bool(false)
-
--- undefined var --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- unset var --
-
-Deprecated: mktime(): The is_dst parameter is deprecated in %s on line %d
-int(%i)
-
--- resource --
-
-Warning: mktime() expects parameter 7 to be integer, resource given in %s on line %d
-bool(false)
-===DONE===