Get the next working day in PHP

By: Moshe Emailed: 1644 times Printed: 2112 times    

Latest comments
By: rohit kumar - how this program is work
By: Kirti - Hi..thx for the hadoop in
By: Spijker - I have altered the code a
By: ali mohammed - why we use the java in ne
By: ali mohammed - why we use the java in ne
By: mizhelle - when I exported the data
By: raul - no output as well, i'm ge
By: Rajesh - thanx very much...
By: Suindu De - Suppose we are executing

Here is an useful code snippet that calculates the next working day in the US. This takes into account the US Federal holiday as well.

<?php 
function getNextWorkDayTime($date=null) 
{ 
    $time = is_string($date) ? strtotime($date) : (is_int($date) ? $date : time()); 
    $y = date('Y', $time); 
    // calculate federal holidays 
    $holidays = array(); 
    // month/day (jan 1st). iteration/wday/month (3rd monday in january) 
    $hdata = array('1/1'/*newyr*/, '7/4'/*jul4*/, '11/11'/*vet*/, '12/25'/*xmas*/, '3/1/1'/*mlk*/, '3/1/2'/*pres*/, '5/1/5'/*memo*/, '1/1/9'/*labor*/, '2/1/10'/*col*/, '4/4/11'/*thanks*/); 
    foreach ($hdata as $h1) { 
        $h = explode('/', $h1); 
        if (sizeof($h)==2) { // by date 
            $htime = mktime(0, 0, 0, $h[0], $h[1], $y); // time of holiday 
            $w = date('w', $htime); // get weekday of holiday 
            $htime += $w==0 ? 86400 : ($w==6 ? -86400 : 0); // if weekend, adjust 
        } else { // by weekday 
            $htime = mktime(0, 0, 0, $h[2], 1, $y); // get 1st day of month 
            $w = date('w', $htime); // weekday of first day of month 
            $d = 1+($h[1]-$w+7)%7; // get to the 1st weekday 
            for ($t=$htime, $i=1; $i<=$h[0]; $i++, $d+=7) { // iterate to nth weekday 
                 $t = mktime(0, 0, 0, $h[2], $d, $y); // get next weekday 
                 if (date('n', $t)>$h[2]) break; // check that it's still in the same month 
                 $htime = $t; // valid 
            } 
        } 
        $holidays[] = $htime; // save the holiday 
    } 
    for ($i=0; $i<5; $i++, $time+=86400) { // 5 days should be enough to get to workday 
        if (in_array(date('w', $time), array(0, 6))) continue; // skip weekends 
        foreach ($holidays as $h) { // iterate through holidays 
            if ($time>=$h && $time<$h+86400) continue 2; // skip holidays 
        } 
        break; // found the workday 
    } 
    return $time; 
} 
?> 


PHP Home | All PHP Tutorials | Latest PHP Tutorials

Sponsored Links

If this tutorial doesn't answer your question, or you have a specific question, just ask an expert here. Post your question to get a direct answer.



Bookmark and Share

Comments(0)


Be the first one to add a comment

Your name (required):


Your email(required, will not be shown to the public):


Your sites URL (optional):


Your comments:



More Tutorials by Moshe
Get the next working day in PHP

More Tutorials in PHP
PHP code to import from CSV file to MySQL
PHP code to write to a CSV file from MySQL query
PHP code to write to a CSV file for Microsoft Applications
Convert XML to CSV in PHP
Password must include both numeric and alphabetic characters - Magento
PHP file upload (Large Files)
PHP file upload prompts authentication for anonymous users
PHP file upload with IIS on windows XP/2000 etc
Error: Length parameter must be greater than 0
Multiple File Upload in PHP using IFRAME
Resume or Pause File Uploads in PHP
Exception in module wampmanager.exe at 000F15A0 in Windows 8
Handling file locks in PHP
HTML table output using Nested for loops in PHP
Count occurrences of a character in a String in PHP

More Latest News
Most Viewed Articles (in PHP )
public, protected, and private Methods in PHP
preg_split() and explode() in PHP
Convert a hex string into a 32-bit IEEE 754 float number in PHP
PHP code to write to a CSV file from MySQL query
Upload and Download files with FTP in PHP
Function to return number of digits of an integer in PHP
func_get_arg() and func_get_args() functions in PHP
Exception in module wampmanager.exe at 000F15A0 in Windows 8
Reading Cookie Values in PHP
Reading .CSV file in PHP
isset() function in PHP
Traversing Arrays Using foreach in PHP
public, protected, and private Properties in PHP
__toString() METHOD in PHP
Find Difference between two dates in PHP
Most Emailed Articles (in PHP)
PHP code to write to a CSV file from MySQL query
PHP code to write to a CSV file for Microsoft Applications
Password must include both numeric and alphabetic characters - Magento
PHP code to import from CSV file to MySQL
Convert XML to CSV in PHP
Comparison operators in PHP
Using PEAR::Crypt_HMAC in PHP
GDBM, NDBM, DB2, DB3, DBM, and CDB Databases in PHP
Perl's Encoding::FixLatin equivalent in PHP
call_user_func() or call_user_func_array() functions in PHP
History and origin of PHP
isset() function in PHP
Binary Operators in PHP
if Statements in PHP
do...while Loops in PHP