Question

My server time is currently:

Sunday 15 December  11:18:00 EST 2013

Given the following script:

date_default_timezone_set("Australia/ACT");
$date1 = date('D, Y-m-d H:i:s', strtotime("+1 Weekday"));
$date2 = date('D, Y-m-d H:i:s', strtotime("+2 Weekdays"));
$date3 = date('D, Y-m-d H:i:s', strtotime("+3 Weekdays"));
$date4 = date('D, Y-m-d H:i:s', strtotime("+4 Weekdays"));
$date5 = date('D, Y-m-d H:i:s', strtotime("+5 Weekdays"));
$date6 = date('D, Y-m-d H:i:s', strtotime("+6 Weekdays"));

echo "+1 Weekday: " .$date1 . "<br>";
echo "+2 Weekday: " .$date2 . "<br>";
echo "+3 Weekday: " .$date3 . "<br>";
echo "+4 Weekday: " .$date4 . "<br>";
echo "+5 Weekday: " .$date5 . "<br>";
echo "+6 Weekday: " .$date6 . "<br>";

What would cause dates 5 to 6 return Sunday? Which isn't a weekday.

+5 Weekday: Sun, 2013-12-22 00:00:00
+6 Weekday: Mon, 2013-12-23 00:00:00

I'm expecting +5 Weekday to return Fri, 2013-12-20.

I'm running PHP 5.4.17-1 on Debian with default timezone set to Australia/Sydney.

Was it helpful?

Solution

This is a bug:

https://bugs.php.net/bug.php?id=63521

Just subtract 2 days when it returns a Sunday.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top