1. For a project I needed to figure the dates of first and last day of the week, month, quarter
    and year for a given date.


    The first thing we need to do is define an Enum of Frequency types

    public enum FrequencyType
    {
    None = 0,
    Daily = 1,
    Weekly = 2,
    Monthly = 3,
    Quarterly = 4,
    Annually = 5,
    }


    The actual procedure get the target date and frequency type, it returns an array of string containing the first and last date. The procedure returns an array of string that contains the first date and the last date of the given frequency.

    private string[] GetRange(FrequencyType frequency, DateTime dateToCheck)
    {
    string[] result = new string [2];
    DateTime dateRangeBegin = dateToCheck;
    TimeSpan duration = new TimeSpan(0, 0, 0, 0); //One day
    DateTime dateRangeEnd = DateTime.Today.Add(duration);

    switch (frequency)
    {
    case FrequencyType.Daily:
    dateRangeBegin = dateToCheck;
    dateRangeEnd = dateRangeBegin;
    break;

    case FrequencyType.Weekly:
    dateRangeBegin = dateToCheck.AddDays(-(int)dateToCheck.DayOfWeek);
    dateRangeEnd = dateToCheck.AddDays(6 - (int)dateToCheck.DayOfWeek);
    break;

    case FrequencyType.Monthly:
    duration = new TimeSpan(DateTime.DaysInMonth ( dateToCheck.Year, dateToCheck.Month) - 1 , 0, 0, 0);
    dateRangeBegin = dateToCheck.AddDays((-1) * dateToCheck.Day + 1);
    dateRangeEnd = dateRangeBegin.Add(duration);
    break;

    case FrequencyType.Quarterly:
    int currentQuater = (dateToCheck.Date.Month - 1) / 3 + 1;
    int daysInLastMonthOfQuarter = DateTime.DaysInMonth(dateToCheck.Year, 3 * currentQuater );
    dateRangeBegin = new DateTime ( dateToCheck.Year, 3 * currentQuater - 2, 1);
    dateRangeEnd = new DateTime(dateToCheck.Year, 3 * currentQuater , daysInLastMonthOfQuarter);
    break;

    case FrequencyType.Annually:
    dateRangeBegin = new DateTime(dateToCheck.Year, 1, 1);
    dateRangeEnd = new DateTime(dateToCheck.Year, 12, 31);
    break;
    }
    result[0] = dateRangeBegin.Date.ToString();
    result[1] = dateRangeEnd.Date.ToString();
    return result;
    }


    To test the function we can write a test method.

    //Test Data
    private void GetDateRanges()
    {
    string[] dates;
    StringBuilder result = new StringBuilder("");

    dates = this.GetRange(FrequencyType.Daily, DateTime.Today); //Or any any other date you want to test.
    result.AppendLine(string.Format("Daily Range : {0} - {1}", dates[0], dates[1]));

    dates = this.GetRange(FrequencyType.Weekly, DateTime.Today);
    result.AppendLine(string.Format("Weekly Range : {0} - {1}", dates[0], dates[1]));

    dates = this.GetRange(FrequencyType.Monthly, DateTime.Today);
    result.AppendLine(string.Format("Monthly Range : {0} - {1}", dates[0], dates[1]));

    dates = this.GetRange(FrequencyType.Quarterly, DateTime.Today);
    result.AppendLine(string.Format("Quarterly Range : {0} - {1}", dates[0], dates[1]));

    dates = this.GetRange(FrequencyType.Annually, DateTime.Today);
    result.AppendLine(string.Format("Annually Range : {0} - {1}", dates[0], dates[1]));

    MessageBox.Show(result.ToString());

    }
    2

    View comments

Blog Archive
Topics
Topics
Loading
Dynamic Views theme. Powered by Blogger. Report Abuse.