ID: 50048 Updated by: [email protected] Reported By: arnbme at gmail dot com Status: Bogus Bug Type: Date/time related Operating System: Wamp or Linux PHP Version: 5.3.0 New Comment:
You also seem to imply that strtotime() should have some sort of bias toward future dates? That makes no sense. You need dates in the past almost as often as you need dates in the future. Previous Comments: ------------------------------------------------------------------------ [2009-11-02 11:25:57] [email protected] For repeating events like that use a DateInterval. For example, this will give you the last Tuesday of every month of 2009: db = new DateTime('2008-12-31'); $de = new DateTime('2009-12-31'); $di = DateInterval::createFromDateString('last tuesday of next month'); $dp = new DatePeriod($db, $di, $de, DatePeriod::EXCLUDE_START_DATE); foreach($dp as $dt) { echo $dt->format("F jS\n") . "<br>\n"; } ------------------------------------------------------------------------ [2009-11-02 11:22:42] arnbme at gmail dot com It's also common to set repeating events such as meetings on the "nth" or "last" "weekday" of a month. As far as I know no one has yet learned how to hold an event on the last day of a prior month, unless we are holding the last event in a handbasket. ------------------------------------------------------------------------ [2009-11-02 07:19:52] [email protected] No, in common English usage, when you just say "last Sunday" it means the previous Sunday. eg. "Where were you last Sunday?" You have to be explicit and say: "What date is the last Sunday of November?" Then the English makes sense, and if you try that with strtotime() you will find that it works. eg. strtotime("last Sunday of November") ------------------------------------------------------------------------ [2009-11-02 01:14:01] arnbme at gmail dot com It would seem my interpretation of "last" varies from the one used by PHP strtotime. I assumed "last Sunday" means the last date that was a Sunday in the month specified by now, similar to how "4 Sunday" moves forward in time, however PHP strtotme apparently interprets "last" to mean "prior" in which case it is operating as designed. Example 1 for strtotime does not show any results. If documentation for using last with strtotime is available please post a link. ------------------------------------------------------------------------ [2009-11-01 20:00:28] [email protected] Thank you for your bug report. Your example prints the last Sunday for December 1st, 2009. The Sunday before that date is November 29th. Can you explain why you think the output is wrong? Also, could you provide a shorter reproduce script, like this: <?php $now = strtotime('2009-12-01'); echo date('c', strtotime('last Sunday', $now))."\n"; ?> ------------------------------------------------------------------------ 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/50048 -- Edit this bug report at http://bugs.php.net/?id=50048&edit=1
