#27431 [Opn->Bgs]: possible leap year strtotime hiccup
| From: | derick@php.net | Date: | Sun, 29 Feb 2004 08:43:46 +0000 |
| Subject: | #27431 [Opn->Bgs]: possible leap year strtotime hiccup | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-55694@lists.php.net to get a copy of this message | ||
ID: 27431
Updated by: derick@php.net
Reported By: pettyr at hotmail dot com
-Status: Open
+Status: Bogus
Bug Type: Date/time related
Operating System: Linux
PHP Version: 4.3.4
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
On the system you say it "works" is PHP 4.1.2, but actually it was a
bug in that version. strtotime() follows the GNU semantics (as you can
read on php.net/strtotime) and they say:
(from:
http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html#SEC103)
The explicit mention of a day of the week will forward the date (only
if necessary) to reach that day of the week in the future.
Days of the week may be spelled out in full:
Sunday', Monday',
Tuesday', Wednesday', Thursday', Friday' or
`Saturday'. Days may be
abbreviated to their first three letters, optionally followed by a
period. The special abbreviations Tues' for Tuesday', `Wednes' for
Wednesday' and Thur' or Thurs' for Thursday' are also
allowed.
A number may precede a day of the week item to move forward
supplementary weeks. It is best used in expression like `third monday'.
In this context, last day' or next day' is also acceptable; they move
one week before or after the day that day by itself would represent.
This means that the current behavoir is correct.
Previous Comments:
------------------------------------------------------------------------
[2004-02-28 18:50:11] pettyr at hotmail dot com
Description:
------------
The clients server is hosted by a third party running debian SMP Apache
and PHP 4.3.4. The use of strtotime("next monday") skips monday the
1st and returns monday the 8th when run on Feb. 28th (tomorrow is a
leap day.)
The servers particulars:
[dali]$ uname -a
Linux dali 2.4.24-grsec+w+fhs5+gr1913+nfs+++p3+c3+bu+gr0b-v6.182 #1 SMP
Mon Jan 5 12:43:44 PST 2004 i686 unknown
[dali]$ date
Sat Feb 28 14:33:39 PST 2004
Reproduce code:
---------------
[dali]$ cat t1.php
<?
$start = strtotime('next monday');
echo ('Start timestamp: '.$start.'<br>'."\n");
$first = strtotime('first Monday',$start);
echo ('"First" Monday: '.date('l, M d
Y',$first).'<br>'."\n");
$oneth = strtotime('1 Monday',$start);
echo ('"1" Monday: '.date('l, M d
Y',$oneth).'<br>'."\n");
$next = strtotime('next Monday',$start);
echo ('"Next" Monday: '.date('l, M d
Y',$next).'<br>'."\n");
$twoth = strtotime('2 Monday',$start);
echo ('"2" Monday: '.date('l, M d
Y',$twoth).'<br>'."\n");
$third = strtotime('third Monday',$start);
echo ('"Third" Monday: '.date('l, M d
Y',$third).'<br>'."\n");
$threeth = strtotime('3 Monday',$start);
echo ('"3" Monday: '.date('l, M d
Y',$threeth).'<br>'."\n");
?>
Expected result:
----------------
[dali]$ php t1.php
Content-type: text/html
X-Powered-By: PHP/4.3.4
Start timestamp: 1078732800<br>
"Next" Monday: Monday, Mar 01 2004<br>
"First" Monday: Monday, Mar 01 2004<br>
"1" Monday: Monday, Mar 01 2004<br>
"Next" Monday: Monday, Mar 08 2004<br>
"2" Monday: Monday, Mar 08 2004<br>
"Third" Monday: Monday, Mar 15 2004<br>
"3" Monday: Monday, Mar 15 2004<br>
[dali]$
Actual result:
--------------
[dali]$ php t1.php
Content-type: text/html
X-Powered-By: PHP/4.3.4
Start timestamp: 1078732800<br>
"Next" Monday: Monday, Mar 08 2004<br>
"First" Monday: Monday, Mar 08 2004<br>
"1" Monday: Monday, Mar 08 2004<br>
"Next" Monday: Monday, Mar 15 2004<br>
"2" Monday: Monday, Mar 15 2004<br>
"Third" Monday: Monday, Mar 22 2004<br>
"3" Monday: Monday, Mar 22 2004<br>
[dali]$
But, the exact same code run from my system:
[root@helios tmp]# uname -a
Linux helios 2.4.20-28.7smp #1 SMP Thu Dec 18 11:18:31 EST 2003 i686
unknown
[root@helios tmp]# date
Sat Feb 28 13:34:08 MST 2004
[root@helios tmp]# php /tmp/t1.php
X-Powered-By: PHP/4.1.2
Content-type: text/html
Start timestamp: 1078124400<br>
"Next" Monday: Monday, Mar 01 2004<br>
"First" Monday: Monday, Mar 01 2004<br>
"1" Monday: Monday, Mar 01 2004<br>
"Next" Monday: Monday, Mar 01 2004<br>
"2" Monday: Monday, Mar 08 2004<br>
"Third" Monday: Monday, Mar 15 2004<br>
"3" Monday: Monday, Mar 15 2004<br>
May be related to:
Bug #18670 strtotime() bug
Submitted: 31 Jul 2002 10:26am EDT Modified: 18 Oct 2003 10:57pm EDT
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27431&edit=1