Bonjour,
Dans la plupart de nos projets .NET nous avons besoin de gérer des dates et plus spécialement les jours fériés. Je vous propose ici quelques extensions de méthode afin de de définir simplement si une date est un jour férié ou non.
/// <summary>
/// Determine si une date donnée est un Weekend ou non
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static Boolean IsWeekEnd(this DateTime date)
{
return date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday;
}
/// <summary>
/// Détermine si une date donnée est un jour férié ou non
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static Boolean IsEasterDate(this DateTime date)
{
var holyDays = new List<DateTime>();
holyDays.Add(new DateTime(date.Year, 1, 1));
holyDays.Add(new DateTime(date.Year, 4, 13));
holyDays.Add(new DateTime(date.Year, 5, 1));
holyDays.Add(new DateTime(date.Year, 5, 8));
holyDays.Add(new DateTime(date.Year, 5, 21));
holyDays.Add(new DateTime(date.Year, 7, 14));
holyDays.Add(new DateTime(date.Year, 8, 15));
holyDays.Add(new DateTime(date.Year, 11, 1));
holyDays.Add(new DateTime(date.Year, 11, 11));
holyDays.Add(new DateTime(date.Year, 12, 25));
holyDays.Add(date.EasterDate());
holyDays.Add(date.EasterDate().AddDays(1));
holyDays.Add(date.EasterDate().AddDays(39));
holyDays.Add(date.EasterDate().AddDays(49));
holyDays.Add(date.EasterDate().AddDays(50));
return holyDays.Where(p => p.Month == date.Month && p.Day == date.Day).Count() > 0;
}
/// <summary>
/// Détermine si une date donnée est un jour férié ou non
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static DateTime EasterDate(this DateTime date)
{
int Y = date.Year;
int a = Y % 19;
int b = Y / 100;
int c = Y % 100;
int d = b / 4;
int e = b % 4;
int f = (b + 8) / 25;
int g = (b - f + 1) / 3;
int h = (19 * a + b - d - g + 15) % 30;
int i = c / 4;
int k = c % 4;
int L = (32 + 2 * e + 2 * i - h - k) % 7;
int m = (a + 11 * h + 22 * L) / 451;
int month = (h + L - 7 * m + 114) / 31;
int day = ((h + L - 7 * m + 114) % 31) + 1;
DateTime dt = new DateTime(date.Year, month, day);
return dt;
}
A Bientôt :)
21f02ef2-b443-427d-bcc5-1f3148c3ac1b|0|.0
C#
c#, extensions