note 59091 added to function.date
| From: | chetan at jethwa dot org | Date: | Fri, 25 Nov 2005 23:17:45 +0000 |
| Subject: | note 59091 added to function.date | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-99116@lists.php.net to get a copy of this message | ||
function for calculating N working days from a date.
<?php
/*
$date - date (dd/mm/yyyy)
$n - number of days
$t - resulting timestamp
*/
function getNthWorkingDay($date,$n,&$t)
{
$arr = array();
list($day,$month,$year) = explode("/",$date);
$ts = mktime(0,0,0,$month,$day,$year);
for($i = 1; $i <= $n; $i++)
{
$_ts = mktime(0,0,0,$month,$day + $i,$year);
$arr[$i - 1]["d"] = date("w",$_ts);
$arr[$i - 1]["ts"] = $_ts;
}
$working_days = array();
$j = 0;
for($i = 1; $i <= $n; $i++)
{
if($arr[$i - 1]["d"] != 6 AND $arr[$i - 1]["d"] != 0)
{
$working_days[$j]["d"] = $arr[$i - 1]["d"];
$working_days[$j]["ts"] = $arr[$i - 1]["ts"];
$j++;
}
}
if(sizeOf($working_days) >= $n)
{
$t = $working_days[sizeOf($working_days) - 1]["ts"];
}
else
{
$_n = $n - sizeOf($working_days);
getNthWorkingDay(date("d/m/Y",$arr[$n-1]["ts"]),$_n,$t);
}
}
?>
----
Manual Page -- http://www.php.net/manual/en/function.date.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+59091
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+59091&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+59091&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+59091&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+59091&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+59091&report=yes&reason=non-english
Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+59091&report=yes&reason=already+in+docs
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+59091&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+59091&report=yes
Search -- http://master.php.net/manage/user-notes.php