pesky business days

    Date: 03/09/06 (Algorithms)    Keywords: php

    I'm working on a major enterprise scheduling/asset management/kitchen sink application and recently ran into the common calculate x number of business days from given date problem. I had trouble finding a simple,concise algorithm to handle it on the net(i found plenty of ugly ones) so i decided to share the one I came up with - which is clean and seems to work nicely - with you guys. Any comments/improvements are much appreciated. This example is implemented in php. $offset is the number of business days ahead to calculate. $date is unixtime start date.

    function increment_business_days($offset,$date){
                    if($offset > 0){//if the offset is greater than 0
                            $dayofweek = date('D',$date);
                            if($dayofweek == 'Fri'){//if today is friday
                                    $date += 259200;//add 3 days worth of seconds to push us to Monday
                            }else{
                                    $date += 86400; //else add 1 days worth of seconds
                            }
                            $offset--;//decrement the offset
                            return $this->increment_business_days($offset,$date);//call me recursively
                    }else{//else we have arrived at our end date, get outta here
                            return $date;
                    }
            }
    
    $date += 3600;//add an hour to compensate for daylight savings weirdness.
    

    Source: http://community.livejournal.com/algorithms/74067.html

« Resource Sharing: Audio... || Normal Cumulative... »


antivirus | apache | asp | blogging | browser | bugtracking | cms | crm | css | database | ebay | ecommerce | google | hosting | html | java | jsp | linux | microsoft | mysql | offshore | offshoring | oscommerce | php | postgresql | programming | rss | security | seo | shopping | software | spam | spyware | sql | technology | templates | tracker | virus | web | xml | yahoo | home