Mega Code Archive

 
Categories / C# / Date Time
 

Return the previous business date of the date specified

// crudwork // Copyright 2004 by Steve T. Pham (http://www.crudwork.com) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with This program.  If not, see <http://www.gnu.org/licenses/>. using System; using System.Collections.Generic; using System.Text; namespace crudwork.Utilities {   /// <summary>   /// Date Utility   /// </summary>   public class DateUtil   {     /// <summary>     /// return the previous business date of the date specified.     /// </summary>     /// <param name="today"></param>     /// <returns></returns>     public static DateTime PreviousBusinessDay(DateTime today)     {       DateTime result;       switch (today.DayOfWeek)       {         case DayOfWeek.Sunday:           result = today.AddDays(-2);           break;         case DayOfWeek.Monday:           result = today.AddDays(-3);           break;         case DayOfWeek.Tuesday:         case DayOfWeek.Wednesday:         case DayOfWeek.Thursday:         case DayOfWeek.Friday:           result = today.AddDays(-1);           break;         case DayOfWeek.Saturday:           result = today.AddDays(-1);           break;         default:           throw new ArgumentOutOfRangeException("DayOfWeek=" + today.DayOfWeek);       }       return ScreenHolidays(result, -1);     }     /// <summary>     /// Return the previous or next business day of the date specified.     /// </summary>     /// <param name="today"></param>     /// <param name="addValue"></param>     /// <returns></returns>     public static DateTime GetBusinessDay(DateTime today, int addValue)     {       #region Sanity Checks       if ((addValue != -1) && (addValue != 1))         throw new ArgumentOutOfRangeException("addValue must be -1 or 1");       #endregion       if (addValue > 0)         return NextBusinessDay(today);       else         return DateUtil.PreviousBusinessDay(today);     }     /// <summary>     /// return the next business date of the date specified.     /// </summary>     /// <param name="today"></param>     /// <returns></returns>     public static DateTime NextBusinessDay(DateTime today)     {       DateTime result;       switch (today.DayOfWeek)       {         case DayOfWeek.Sunday:         case DayOfWeek.Monday:         case DayOfWeek.Tuesday:         case DayOfWeek.Wednesday:         case DayOfWeek.Thursday:           result = today.AddDays(1);           break;         case DayOfWeek.Friday:           result = today.AddDays(3);           break;         case DayOfWeek.Saturday:           result = today.AddDays(2);           break;         default:           throw new ArgumentOutOfRangeException("DayOfWeek=" + today.DayOfWeek);       }       return ScreenHolidays(result, 1);     }     /// <summary>     /// return the mm/dd string of the date specified.     /// </summary>     /// <param name="time"></param>     /// <returns></returns>     public static string MonthDay(DateTime time)     {       return String.Format("{0:00}/{1:00}", time.Month, time.Day);     }     /// <summary>     /// screen for holidays      /// (simple mode)     /// </summary>     /// <param name="result"></param>     /// <param name="addValue"></param>     /// <returns></returns>     public static DateTime ScreenHolidays(DateTime result, int addValue)     {       #region Sanity Checks       if ((addValue != -1) && (addValue != 1))         throw new ArgumentOutOfRangeException("addValue must be -1 or 1");       #endregion       // holidays on fixed date       switch (MonthDay(result))       {         case "01/01":  // Happy New Year         case "07/04":  // Independent Day         case "12/25":  // Christmas           return GetBusinessDay(result, addValue);         default:           return result;       }     }         } }