Accueil > > > JOURS FÉRIÉS ET DIMANCHE
JOURS FÉRIÉS ET DIMANCHE
Information sur la source
Description
Cette fonction retourne un boolean à FALSE si le date passée en paramètre est un jour férié ou un dimanche J'ai utilisé de nombreux exemples pour essayer de simplifier au maximum la fonction. La formule utilisé pour calculer pâques : http://www.auduteau.net/calendar/cal2_9_3.shtml
Source
- private bool bolIsWorkingDay(DateTime dtDate)
- {
- bool bolWorkingDay = true;
- Array arrDateFerie = Array.CreateInstance(typeof(DateTime),8);
- // 01 Janvier
- arrDateFerie.SetValue( new DateTime(dtDate.Year,1,1),0);
- // 01 Mai
- arrDateFerie.SetValue( new DateTime(dtDate.Year,5,1),1);
- // 08 Mai
- arrDateFerie.SetValue( new DateTime(dtDate.Year,5,8),2);
- // 14 Juillet
- arrDateFerie.SetValue( new DateTime(dtDate.Year,7,14),3);
- // 15 Aout
- arrDateFerie.SetValue( new DateTime(dtDate.Year,8,15),4);
- // 01 Novembre
- arrDateFerie.SetValue( new DateTime(dtDate.Year,11,1),5);
- // 11 Novembre
- arrDateFerie.SetValue( new DateTime(dtDate.Year,11,11),6);
- // Noël
- arrDateFerie.SetValue( new DateTime(dtDate.Year,12,25),7);
-
- // Dimanche ou jour férié
- bolWorkingDay = ! ((dtDate.DayOfWeek == DayOfWeek.Sunday) || (Array.BinarySearch(arrDateFerie,dtDate) >= 0));
- if (bolWorkingDay )
- {
- // Calcul du jour de pâques (algorithme de Oudin (1940))
- //Calcul du nombre d'or - 1
- int intGoldNumber = (int)(dtDate.Year % 19);
- // Année divisé par cent
- int intAnneeDiv100 = (int)(dtDate.Year /100);
- // intEpacte est = 23 - Epacte (modulo 30)
- int intEpacte = (int)((intAnneeDiv100 - intAnneeDiv100/4 - (8 * intAnneeDiv100 + 13)/25 +(
- 19 * intGoldNumber)+ 15) % 30);
- //Le nombre de jours à partir du 21 mars pour atteindre la pleine lune Pascale
- int intDaysEquinoxeToMoonFull = (int)(intEpacte - (intEpacte/28)*(1 - (intEpacte/28)*(29/(intEpacte + 1))*((21 - intGoldNumber)/11)));
- //Jour de la semaine pour la pleine lune Pascale (0=dimanche)
- int intWeekDayMoonFull = (int)((dtDate.Year + dtDate.Year/4 + intDaysEquinoxeToMoonFull +
- 2 - intAnneeDiv100 + intAnneeDiv100/4) % 7);
- // Nombre de jours du 21 mars jusqu'au dimanche de ou
- // avant la pleine lune Pascale (un nombre entre -6 et 28)
- int intDaysEquinoxeBeforeFullMoon = intDaysEquinoxeToMoonFull - intWeekDayMoonFull;
- // mois de pâques
- int intMonthPaques =(int)( 3 + (intDaysEquinoxeBeforeFullMoon + 40)/44);
- // jour de pâques
- int intDayPaques = (int)(intDaysEquinoxeBeforeFullMoon + 28 - 31*(intMonthPaques / 4));
- // lundi de pâques
- DateTime dtMondayPaques = new DateTime(dtDate.Year,intMonthPaques,intDayPaques+1);
- // Ascension
- DateTime dtAscension = dtMondayPaques.AddDays(38);
- //Pentecote
- DateTime dtMondayPentecote = dtMondayPaques.AddDays(49);
- bolWorkingDay=! ((DateTime.Compare(dtMondayPaques,dtDate)==0) || (DateTime.Compare(dtAscension,dtDate)==0)
- || (DateTime.Compare(dtMondayPentecote,dtDate)==0));
- }
- return bolWorkingDay;
- }
private bool bolIsWorkingDay(DateTime dtDate)
{
bool bolWorkingDay = true;
Array arrDateFerie = Array.CreateInstance(typeof(DateTime),8);
// 01 Janvier
arrDateFerie.SetValue( new DateTime(dtDate.Year,1,1),0);
// 01 Mai
arrDateFerie.SetValue( new DateTime(dtDate.Year,5,1),1);
// 08 Mai
arrDateFerie.SetValue( new DateTime(dtDate.Year,5,8),2);
// 14 Juillet
arrDateFerie.SetValue( new DateTime(dtDate.Year,7,14),3);
// 15 Aout
arrDateFerie.SetValue( new DateTime(dtDate.Year,8,15),4);
// 01 Novembre
arrDateFerie.SetValue( new DateTime(dtDate.Year,11,1),5);
// 11 Novembre
arrDateFerie.SetValue( new DateTime(dtDate.Year,11,11),6);
// Noël
arrDateFerie.SetValue( new DateTime(dtDate.Year,12,25),7);
// Dimanche ou jour férié
bolWorkingDay = ! ((dtDate.DayOfWeek == DayOfWeek.Sunday) || (Array.BinarySearch(arrDateFerie,dtDate) >= 0));
if (bolWorkingDay )
{
// Calcul du jour de pâques (algorithme de Oudin (1940))
//Calcul du nombre d'or - 1
int intGoldNumber = (int)(dtDate.Year % 19);
// Année divisé par cent
int intAnneeDiv100 = (int)(dtDate.Year /100);
// intEpacte est = 23 - Epacte (modulo 30)
int intEpacte = (int)((intAnneeDiv100 - intAnneeDiv100/4 - (8 * intAnneeDiv100 + 13)/25 +(
19 * intGoldNumber)+ 15) % 30);
//Le nombre de jours à partir du 21 mars pour atteindre la pleine lune Pascale
int intDaysEquinoxeToMoonFull = (int)(intEpacte - (intEpacte/28)*(1 - (intEpacte/28)*(29/(intEpacte + 1))*((21 - intGoldNumber)/11)));
//Jour de la semaine pour la pleine lune Pascale (0=dimanche)
int intWeekDayMoonFull = (int)((dtDate.Year + dtDate.Year/4 + intDaysEquinoxeToMoonFull +
2 - intAnneeDiv100 + intAnneeDiv100/4) % 7);
// Nombre de jours du 21 mars jusqu'au dimanche de ou
// avant la pleine lune Pascale (un nombre entre -6 et 28)
int intDaysEquinoxeBeforeFullMoon = intDaysEquinoxeToMoonFull - intWeekDayMoonFull;
// mois de pâques
int intMonthPaques =(int)( 3 + (intDaysEquinoxeBeforeFullMoon + 40)/44);
// jour de pâques
int intDayPaques = (int)(intDaysEquinoxeBeforeFullMoon + 28 - 31*(intMonthPaques / 4));
// lundi de pâques
DateTime dtMondayPaques = new DateTime(dtDate.Year,intMonthPaques,intDayPaques+1);
// Ascension
DateTime dtAscension = dtMondayPaques.AddDays(38);
//Pentecote
DateTime dtMondayPentecote = dtMondayPaques.AddDays(49);
bolWorkingDay=! ((DateTime.Compare(dtMondayPaques,dtDate)==0) || (DateTime.Compare(dtAscension,dtDate)==0)
|| (DateTime.Compare(dtMondayPentecote,dtDate)==0));
}
return bolWorkingDay;
}
Historique
- 12 octobre 2004 10:00:19 :
- Petit oubli
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
[C#] Condition dateTimePicker (samedi ou dimanche) [ par Stargirlfr ]
Bonsoir, Je souhaiterais savoir s'il existe des fonctions qui permettent de faire des conditions sur les dateTimePicker ?Par exemple dire : "si le jou
Faire une mise a jour d'une application en c# [ par redox87 ]
Bonjour,je veux savoir comment en peut faire des mises a jours des applications en C#, le problème c'est que j'ai des applications portables sur ma cl
Mise a jour d'une base des données [ par hfozepofpozfpfezpz ]
Bonjour, j'aimerai ajouter un enregistrement a une base des données Sql server.Merci d'avance Mehdi
Mise à jour [ par benameur11 ]
salut , je n'arrive pas a mettre ma table à jour avec ces commandes OleDbDataAdapter DtaGrid = new OleDbDataAdapter("SELECT * FROM Paiement ",Conn);
Contrôler les données lors de la saisie dans un datagridview [ par alexbesn ]
Bonjour. J'ai un datagridview lié à un dataset. Je met à jour la base avec des Dataadaptateur et commandbuilder. Quand je modifie ou ajoute directem
mise à jour d'une combobox sur un formulaire à partir d'un second formulaire [ par luudii34 ]
Bonjour!Je suis en train de faire une application dans le cadre de mon BTS et j'ai beaucoup de mal avec le C#!Je cherche à mettre à jour une combobox
Mise à jour du programme automatique [ par gomoz ]
BonjourAvant de déployer mon application, je veux implémenter une méthode pour mettre à jour l'application (et le fichier de configuration qui va avec
webService mis à jour via un winForm [ par piwane ]
Bonjour,je vais essayer d'être clair...j'aimerai pouvoir accéder, via un webService, à l'état d'une appli (codée en C# winForm).quelqu'un sait-il s'il
Threading sur le .NET CF [ par t00f ]
Bonjour à tous, Je viens vers vous car j'ai une question qui peut paraitre stupide mais sincère : Je cherche a créer un Control personnalisé (type c
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|