Helper class that provides most commonly used Extension Methods for DateTime object
The following class returns extended functionality on DATETIME objects. In the project that consists this class, it can be directly used with any DATETIME object. if not add reference to this assembly and then you can use it on any DATETIME object
using System;
using System.Collections.Generics;
namespace Utilities
{
/// <summary>
/// DayExtensions
/// </summary>
public static class DayExtensions
{
/// <summary>
/// Determines whether the specified current date is future date.
/// </summary>
/// <param name="date">The date.</param>
/// <returns>
/// <c>true</c> if [is future date] [the specified
date]; otherwise, <c>false</c>.
/// </returns>
public static bool IsFutureDate(this DateTime date)
{
int currentYear = DateTime.Now.Year;
bool isFutureDate = false;
//Future Year.
if (date.Year > currentYear)
{
isFutureDate
= true;
}
else
{
if (date.Year < currentYear)
{
//Earlier Year.
isFutureDate
= false;
}
else
{
//Current Year.
isFutureDate
= date.DayOfYear > DateTime.Now.DayOfYear ? true : false;
}
}
return isFutureDate;
}
/// <summary>
/// Determines whether [is weekend date] [the specified date].
/// </summary>
/// <param name="date">The date.</param>
/// <returns>
/// <c>true</c> if [is weekend date] [the specified
date]; otherwise, <c>false</c>.
/// </returns>
public static bool IsWeekendDate(this DateTime date)
{
if ((date.DayOfWeek == DayOfWeek.Saturday) || (date.DayOfWeek == DayOfWeek.Sunday))
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// Lasts the day.
/// </summary>
/// <param name="date">The date.</param>
/// <returns></returns>
public static DateTime LastDay(this DateTime date)
{
int daysInMonth = DateTime.DaysInMonth(date.Year, date.Month);
DateTime
lastDay = date.FirstDay().AddDays(daysInMonth - 1);
return lastDay;
}
/// <summary>
/// Returns a DateTime representing the first day in the current month
/// </summary>
/// <param name="date">The date</param>
/// <returns></returns>
public static DateTime FirstDay(this DateTime date)
{
DateTime
firstday = date.AddDays(1 - date.Day);
return firstday;
}
/// <summary>
/// Returns a DateTime representing the first specified day in the current month
/// </summary>
/// <param name="date">The day</param>
/// <param name="dayOfWeek">The current day of week</param>
/// <returns></returns>
public static DateTime FirstDayofWeek(this DateTime date, DayOfWeek dayOfWeek)
{
DateTime
first = date.FirstDay();
if (first.DayOfWeek != dayOfWeek)
{
first
= first.Next(dayOfWeek);
}
return first;
}
/// <summary>
/// Returns a DateTime representing the last specified day in the current month
/// </summary>
/// <param name="date">The date</param>
/// <param name="dayOfWeek">The current day of week</param>
/// <returns></returns>
public static DateTime Last(this DateTime date, DayOfWeek dayOfWeek)
{
DateTime
last = date.LastDay();
last
= last.AddDays(Math.Abs(dayOfWeek - last.DayOfWeek) * -1);
return last;
}
/// <summary>
/// Returns aDateTime representing the first date following the current date which
falls on the given day of the week
/// </summary>
/// <param name="date">The date</param>
/// <param name="dayOfWeek">The day of week for the next date to
get</param>
/// <returns></returns>
public static DateTime Next(this DateTime date, DayOfWeek dayOfWeek)
{
int offsetDays = dayOfWeek - date.DayOfWeek;
if (offsetDays <= 0)
{
offsetDays
+= 7;
}
return date.AddDays(offsetDays);
}
/// <summary>
/// Gets the Previous/Last occured Friday's Date. Returns this friday if the date
is in current week. or the
/// </summary>
/// <param name="current">The current.</param>
/// <param name="defaultDate">The default date.</param>
/// <returns></returns>
public static DateTime LastFriday(this DateTime current, DateTime? defaultDate)
{
DayOfWeek
today = DateTime.Now.DayOfWeek;
int days =
today - DayOfWeek.Sunday;
DateTime
weekStartDate = DateTime.Now.AddDays(-days);
DateTime
weekEndDate = weekStartDate.AddDays(6);
double offset = 0;
if ((current.Ticks > weekStartDate.Ticks) && (current.Ticks < weekEndDate.Ticks))
{
//Selected date is in current week. Adjust the offset and send it back.
switch (current.DayOfWeek)
{
case DayOfWeek.Monday:
offset
= -3;
break;
case DayOfWeek.Tuesday:
offset
= -4;
break;
case DayOfWeek.Wednesday:
offset
= -5;
break;
case DayOfWeek.Thursday:
offset
= -6;
break;
case DayOfWeek.Friday:
offset
= -7;
break;
case DayOfWeek.Saturday:
offset
= -1;
break;
case DayOfWeek.Sunday:
offset
= -2;
break;
}
}
else
{
//return friday of selected day's week.
switch (current.DayOfWeek)
{
case DayOfWeek.Monday:
offset
= 4;
break;
case DayOfWeek.Tuesday:
offset
= 3;
break;
case DayOfWeek.Wednesday:
offset
= 2;
break;
case DayOfWeek.Thursday:
offset
= 1;
break;
case DayOfWeek.Friday:
offset
= 0;
break;
case DayOfWeek.Saturday:
offset
= -1;
break;
case DayOfWeek.Sunday:
offset
= 5;
break;
}
}
return current.AddDays(offset);
}
}
By [)ia6l0 iii Popularity (1458 Views)