note 101879 deleted from function.mktime by danbrown

From: Date: Sat, 15 Jan 2011 16:01:23 +0000
Subject: note 101879 deleted from function.mktime by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-175785@lists.php.net to get a copy of this message
Note Submitter: Ray.Paseur Gmail ---- This may or may not be a bug, but it illustrates something that can be counter-intuitive about mktime(). PHP version 5.3.4. The script output is: 2010-11-30T00:00:00-05:00 2010-12-30T00:00:00-05:00 2011-01-30T00:00:00-05:00 2011-03-02T00:00:00-05:00 2011-04-02T01:00:00-04:00 2011-05-02T01:00:00-04:00 2010-11-30T00:00:00-05:00 2010-12-30T00:00:00-05:00 2011-01-30T00:00:00-05:00 2011-03-02T00:00:00-05:00 2011-04-02T00:00:00-04:00 2011-05-02T00:00:00-04:00 <?php // RAY_temp_pmsguy.php error_reporting(E_ALL); echo "<pre>"; // REQUIRED FOR PHP 5.1+ date_default_timezone_set('America/New_York'); // GET A CUTOFF DATE TO STOP THE ITERATORS $future = date('c', strtotime('April 4, 2011')); // SHOW THE STRTOTIME() RESULTS - NOT LOGICALLY CONSISTENT // GET THE ISO-8601 DATE STRING A PRIOR MONTH END $today = date('c', strtotime('November 30, 2010')); echo PHP_EOL . $today; // ITERATE OVER THE DAYS, TESTING FOR MONTH INTERVALS while ($today < $future) { // NOTE THE CHANGE TO DAYLIGHT SAVING TIME $today = date('c', strtotime($today . ' + 1 MONTH')); echo PHP_EOL . $today; } echo PHP_EOL; // SHOW THE MKTIME() RESULTS - ALSO NOT LOGICALLY CONSISTENT // GET THE ISO-8601 DATE STRING A PRIOR MONTH END $today = date('c', strtotime('November 30, 2010')); echo PHP_EOL . $today; // ITERATE OVER THE DAYS, TESTING FOR MONTH INTERVALS while ($today < $future) { // ISOLATE THE DATE COMPONENTS $s = strtotime($today); $m = date('m', $s); $d = date('d', $s); $y = date('Y', $s); // ADD ONE TO THE MONTH $t = mktime(0,0,0, $m+1, $d, $y); $today = date('c', $t); echo PHP_EOL . $today; }

« previous php.notes (#175785) next »