ID: 50048
User updated by: arnbme at gmail dot com
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:
DateInterval::__construct
(PHP 5 >= 5.3.0)
My Wamp server, that I use for development runs PHP 5.3, 5.2.11 and
5.2.9. My commercial web host runs PHP 5.2.9 and my code was initially
developed in PHP 3 something, hence my use of strtotime, but thank you
for a way to code future dates in PHP >=5.3
BTW you have a coding error in your example
db = new DateTime('2008-12-31'); should be
$db = new DateTime('2008-12-31');
Au revoir (beam me out of here Scotty)
Previous Comments:
------------------------------------------------------------------------
[2009-11-02 11:28:41] [email protected]
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.
------------------------------------------------------------------------
[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.
------------------------------------------------------------------------
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