Bug #61642 [Opn]: modify("+5 weekdays") returns Sunday

From: Date: Wed, 11 Apr 2012 16:11:26 +0000
Subject: Bug #61642 [Opn]: modify("+5 weekdays") returns Sunday
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-169451@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=61642&edit=1

 ID:                 61642
 User updated by:    jeff at nd4c dot com
 Reported by:        jeff at nd4c dot com
 Summary:            modify("+5 weekdays") returns Sunday
 Status:             Open
 Type:               Bug
 Package:            Date/time related
 Operating System:   Fedora 14 and Windows 7
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

The documentation is at:
http://www.php.net/manual/en/datetime.formats.relative.php

That page is linked to from:
http://www.php.net/manual/en/datetime.formats.php

Which is linked to from:
http://www.php.net/manual/en/datetime.modify.php


Previous Comments:
------------------------------------------------------------------------
[2012-04-11 15:56:41] zhanglijiu at gmail dot com

I check the php manual, there is no weekdays parameter for modify. So you have to 
use modify(+ n day) or modify(+ n week).

------------------------------------------------------------------------
[2012-04-05 18:01:12] jeff at nd4c dot com

Description:
------------
Tested on Windows 7: 
  Apache/2.2.16 (Win32) PHP/5.3.5
Tested on Fedora 14: 
  Fedora release 14 (Laughlin) Linux 2.6.35.4-rscloud x86_64 
  php.x86_64 5.3.8-3.fc14
These are the latest stable versions I can find for these two systems.  (Especially since V6
binaries are no longer available for Windows.)
The Linux system is a live server using a framework that has not been tested with any later versions
than 5.3.8

When modifying a DateTime instance with "+5 weekdays" it will return a date for a Sunday
and not a weekday.

Running the Test script you note that the section for "5" returns Sunday.  All the other
numbers are correct.  Note the pattern for skipping the weekends is always for Friday, Saturday and
Sunday.  However for "+5" weekends should be skipped for Saturday, Sunday and Monday,
which is different than for any other number.

Test script:
---------------
$days = array(1,2,3,4,5,6,7,8,);
$dates =
array('2012-03-29','2012-03-30','2012-03-31','2012-04-01','2012-04-02','2012-04-03','2012-04-04','2012-04-05',);
foreach ($days as $businessdays)
{
	foreach ($dates as $startdate)
	{
		$start = new DateTime($startdate);
		$date = new DateTime($startdate);
		echo '<br/>'.$businessdays.' : '.$date->format('l').'
: '.$date->format('Y-m-d');
		$date->modify("+{$businessdays} weekdays");
		echo ' : '.$date->format('Y-m-d').' :
'.$date->format('l');
	}
	echo '<br/>';
}



Expected result:
----------------
...

5 : Thursday : 2012-03-29 : 2012-04-05 : Thursday
5 : Friday : 2012-03-30 : 2012-04-06 : Friday
5 : Saturday : 2012-03-31 : 2012-04-09 : Monday
5 : Sunday : 2012-04-01 : 2012-04-09 : Monday
5 : Monday : 2012-04-02 : 2012-04-09 : Monday
5 : Tuesday : 2012-04-03 : 2012-04-10 : Tuesday
5 : Wednesday : 2012-04-04 : 2012-04-11 : Wednesday
5 : Thursday : 2012-04-05 : 2012-04-12 : Thursday

...

Actual result:
--------------
...

5 : Thursday : 2012-03-29 : 2012-04-05 : Thursday
5 : Friday : 2012-03-30 : 2012-04-08 : Sunday
5 : Saturday : 2012-03-31 : 2012-04-08 : Sunday
5 : Sunday : 2012-04-01 : 2012-04-08 : Sunday
5 : Monday : 2012-04-02 : 2012-04-09 : Monday
5 : Tuesday : 2012-04-03 : 2012-04-10 : Tuesday
5 : Wednesday : 2012-04-04 : 2012-04-11 : Wednesday
5 : Thursday : 2012-04-05 : 2012-04-12 : Thursday

...


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61642&edit=1


Thread (4 messages)

« previous php.bugs (#169451) next »