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
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|