Return the previous or next business day of the date specified. : Date Time Util « Development Class « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Design Patterns
8.Development Class
9.Event
10.File Stream
11.Generics
12.GUI Windows Form
13.Language Basics
14.LINQ
15.Network
16.Office
17.Reflection
18.Regular Expressions
19.Security
20.Services Event
21.Thread
22.Web Services
23.Windows
24.Windows Presentation Foundation
25.XML
26.XML LINQ
C# / C Sharp by API
C# / CSharp Tutorial
C# / CSharp Open Source
C# / C Sharp » Development Class » Date Time UtilScreenshots 
Return the previous or next business day 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 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 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 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;
      }
    }
    }
}

   
  
Related examples in the same category
1.Gets the days between.
2.Gets the days in month.
3.Gets the days in year.
4.Gets the end of day.
5.Gets the start of month.
6.Gets the end of month.
7.Gets the end of quarter.
8.Gets the end of year.
9.Gets the months between.
10.Return a unique identifier based on system's full date (yyyymmdd) and time (hhmissms).
11.Return a elapsed time in formatted string. (hh:mm:ss:mi)
12.Screen for holidays
13.Return the previous business date of the date specified.
14.Return true if the number of seconds has elapsed since the last check
15.Add Business Days
16.Get Day Of Week
17.Add week to a DateTime
18.Get the quarter number for the DateTime
19.Get the week number
20.Date and time To Words
21.Return the number of milliseconds since the Unix epoch (1 Jan., 1970 UTC) for a given DateTime value.
22.Convert Unix Seconds
23.Get Elapsed Time
24.Is given DateTime Weekend
25.Converts a Date to a string using relative time.
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.