#18670 [Com]: strtotime() bug

From: Date: Thu, 31 Oct 2002 18:07:20 +0000
Subject: #18670 [Com]: strtotime() bug
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-23826@lists.php.net to get a copy of this message
ID: 18670 Comment by: matt@codewalkers.com Reported By: nic@bbmcarlson.com Status: Assigned Bug Type: Date/time related Operating System: RedHat Linux Linux linux1 2.2.16 PHP Version: 4.2.2 Assigned To: rasmus New Comment: I also can confirm that strtotime acts funny when the same day does not exist in the next month: <? $timestamp = strtotime("31 October 2002"); $next_month = strftime("%B" ,strtotime("+1 month", $timestamp)); echo $next_month; ?> displays: December Previous Comments: ------------------------------------------------------------------------ [2002-09-24 17:07:42] spud@nothingness.org In PHP 4.2.3, the difference between "2" and "next" are still screwy in strtotime(). I'm trying to parse icalendar recurrence formats, so I need to calculate things like the "second Monday" in a month. Sample code below illustrates the difference between "2" and "next" (which should be identical). <? $start = strtotime('September 1, 2002'); echo ('Start timestamp: '.$start.'<br>'); echo ('Start date: Sunday, Sep 1 2002<br>'); $first = strtotime('first Monday',$start); echo ('"First" Monday: '.date('l, M d Y',$first).'<br>'); $oneth = strtotime('1 Monday',$start); echo ('"1" Monday: '.date('l, M d Y',$oneth).'<br>'); $next = strtotime('next Monday',$start); echo ('"Next" Monday: '.date('l, M d Y',$next).'<br>'); $twoth = strtotime('2 Monday',$start); echo ('"2" Monday: '.date('l, M d Y',$twoth).'<br>'); $third = strtotime('third Monday',$start); echo ('"Third" Monday: '.date('l, M d Y',$third).'<br>'); $threeth = strtotime('3 Monday',$start); echo ('"3" Monday: '.date('l, M d Y',$threeth).'<br>'); ?> ------------------------------------------------------------------------ [2002-07-31 18:07:05] kalowsky@php.net Assigning to rasmus as it sounds like he already knows whats wrong. ------------------------------------------------------------------------ [2002-07-31 10:51:09] kalowsky@php.net so can we assign this bug to you Rasmus? ------------------------------------------------------------------------ [2002-07-31 10:44:11] rasmus@php.net Sebastian, yes, that is because I changed how "next" works based on bug report #18655 It works correctly for days now, but it does seem like month-handling is messed up now. ------------------------------------------------------------------------ [2002-07-31 10:39:10] rasmus@php.net The problem is that it adds a full month to the current timestamp. So you end up getting the 31st of the next month and some months do not have 31 days. I'll need to do some reading to determine if strtotime() is supposed to pick the beginning of the next month instead, or perhaps the middle. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/18670 -- Edit this bug report at http://bugs.php.net/?id=18670&edit=1

« previous php.bugs (#23826) next »