note 101879 added to function.mktime
| From: | Ray dot PaseurGmail at osu1 dot php dot net | Date: | Sat, 15 Jan 2011 15:56:28 +0000 |
| Subject: | note 101879 added to function.mktime | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-175782@lists.php.net to get a copy of this message | ||
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;
}
----
Server IP: 192.41.42.26
Probable Submitter: 98.169.58.122
----
Manual Page -- http://www.php.net/manual/en/function.mktime.php
Edit -- https://master.php.net/note/edit/101879
Del: integrated -- https://master.php.net/note/delete/101879/integrated
Del: useless -- https://master.php.net/note/delete/101879/useless
Del: bad code -- https://master.php.net/note/delete/101879/bad+code
Del: spam -- https://master.php.net/note/delete/101879/spam
Del: non-english -- https://master.php.net/note/delete/101879/non-english
Del: in docs -- https://master.php.net/note/delete/101879/in+docs
Del: other reasons-- https://master.php.net/note/delete/101879
Reject -- https://master.php.net/note/reject/101879
Search -- https://master.php.net/manage/user-notes.php