|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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
Sources en rapport avec celle ci
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 frame à partir d'une autre frame [ par decan ]
Bonjour,je souhaite mettre à jour une frame à partir des infos que je viens de sélectionner dans une autre frame.exemple : sélection d'une valeur dans
Mise a jour fichier apres modif dans une DataGrid [ par logisoftfr ]
bonjour a tous Voila, j'ai un form qui ne contient qu'une datagrid, ce form doit me servire a alimenter ma table, mais voila je ne sais pas comment l'
Erreur avec DateTime [ par heriquet ]
Bonjour.J'ai un problème assez ennuyeux avec une date.J'ai une application en C# qui tourne avec une base Access.Quand j'ouvre un formulaire de donnée
|
Téléchargements
Logiciels à télécharger sur le même thème :
|