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 !

JOUR ASSOCIÉ À UNE DATE DONNÉE


Information sur la source

Catégorie :Maths et Algorithmes Classé sous : SimpleDateFormat, Zeller, Date, format, ParseException Niveau : Débutant Date de création : 10/10/2006 Date de mise à jour : 01/11/2007 16:23:52 Vu : 6 969

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Ce programme a pour but de déterminer le jour de la semaine correspondant à une date donnée.

Le programme se base sur la formule du Mathématicien Allmend : Zeller

http://www.chez.com/cosmos2000/Vendredi13/ZellerMethode.html
http://www.recreomath.qc.ca/dict_zeller_f.htm


C'est une occasion pour :

1. Connaître ce grand Mr. (Zeller)
2. Connaître votre jour de naissance si ça vous intéresse vraimant.
3. Marquer / se rappler des certains événements de votre vie.
4. Faire un peu de l'algorithmiques.

 

Source

  • /**
  • * Programme a pour but de déterminer le jour de la semaine correspondant à une date donnée.
  • * Le programme se base sur la formule du Mathématicien Allmend : Zeller
  • *
  • * Auteur : A.B.
  • * Date : 10/10/2006
  • */
  • import java.util.Date;
  • import java.text.SimpleDateFormat;
  • import java.text.Format;
  • import java.text.ParseException;
  • public class Algorithm {
  • /**
  • * Les jours de la semaines : ici Samedi est supposé le premier jour de la semaine.
  • */
  • private static final String [] days = {"Samedi", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi"};
  • /**
  • * Cette méthode implémente la formule de Zeller.
  • * @return : Jour correspondant à la date fournit en paramètre.
  • */
  • public static String formuleZeller (int dd, int mm, int yyyy) {
  • if (mm == 1 | mm == 2) {
  • mm += 12;
  • yyyy--;
  • }
  • int cc = yyyy/100;
  • int yy = yyyy%100;
  • int k = (int)(dd + Math.round(2.6d*(mm + 1)) + Math.round(cc/4) - 2*cc + yy + Math.round(yy/4));
  • if (k<0) {
  • k = (-k)%7;
  • k = 7 - k;
  • }
  • return days [k%7];
  • }
  • /**
  • * Cette méthode se charge de vérifier la validité d'une date.
  • * @return : true si la date fourint est valide par rapport au patron : "dd/MM/yyyy"
  • * false sinon
  • */
  • public static boolean dateEstValide (String date, String pattern) {
  • try {
  • Date simple = new SimpleDateFormat(pattern).parse(date);
  • Format fmt = new SimpleDateFormat(pattern);
  • if (!date.equals(fmt.format(simple)))
  • return false;
  • return true;
  • } catch(ParseException e) {
  • return false;
  • }
  • }
  • /**
  • * Exécution
  • */
  • public static void main(String [] args) {
  • /**
  • * Vérifier la validité de la ligne de commande.
  • */
  • if (args.length != 3) {
  • System.err.println ();
  • System.err.println ("usage : Algorithm day month year");
  • System.err.println ();
  • System.err.println ("exemple: Algorithm 16 09 1982");
  • System.err.println ("\7");
  • System.exit (1);
  • }
  • String pattern = "dd/MM/yyyy";
  • String date = "";
  • /**
  • * Récupérer les arguments fournit par la ligne de commande et le remettre
  • * sous la forme "dd/MM/yyyy" pour que cette date respecte notre patron
  • * exemple : une date 1 2 1980 sera mis comme ceci : 01/02/1982
  • * on vérifie bien qu'elle est "sous" la forme "dd/MM/yyyy"
  • */
  • if (args [0].length () == 1) {
  • date += "0";
  • }
  • date += args [0] + "/";
  • if (args [1].length () == 1) {
  • date += "0";
  • }
  • date += args [1] + "/";
  • date += args [2];
  • /**
  • * Tester la validité de la date fournit par la ligne de commande.
  • */
  • if (!dateEstValide (date, pattern)) {
  • System.err.println ();
  • System.err.println ("La date saisie est invalide ...");
  • System.err.println ("\7");
  • System.exit (1);
  • }
  • else {
  • String result;
  • result = Algorithm.formuleZeller (Integer.parseInt (args [0]),
  • Integer.parseInt (args [1]),
  • Integer.parseInt (args [2]));
  • System.out.println ();
  • System.out.print ("Le jour correspondant a la date " + date + " est : ");
  • System.out.println (result);
  • }
  • }
  • }
/** 
  * Programme a pour but de déterminer le jour de la semaine correspondant à une date donnée.
  * Le programme se base sur la formule du Mathématicien Allmend : Zeller
  *
  * Auteur : A.B.
  * Date   : 10/10/2006
  */

import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.Format;
import java.text.ParseException;

public class Algorithm {

	/**
          * Les jours de la semaines : ici Samedi est supposé le premier jour de la semaine.
          */
	private static final String [] days = {"Samedi", "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi"};

	/**
          * Cette méthode implémente la formule de Zeller.
          * @return : Jour correspondant à la date fournit en paramètre.
          */
	public static String formuleZeller (int dd, int mm, int yyyy) {
		if (mm == 1 | mm == 2) {
			mm += 12;
			yyyy--;	
		}

		int cc = yyyy/100;
		int yy = yyyy%100;

		int k = (int)(dd + Math.round(2.6d*(mm + 1)) + Math.round(cc/4) - 2*cc + yy + Math.round(yy/4));

		if (k<0) {
			k = (-k)%7;
			k = 7 - k;
		}
		return days [k%7];
	}

	/** 
          * Cette méthode se charge de vérifier la validité d'une date.
          * @return : true si la date fourint est valide par rapport au patron : "dd/MM/yyyy"
          *           false sinon
          */
	public static boolean dateEstValide (String date, String pattern) {
		try {
            		Date simple = new SimpleDateFormat(pattern).parse(date);
            		Format fmt = new SimpleDateFormat(pattern);
             
            		if (!date.equals(fmt.format(simple)))
                		return false;

            		return true;
        	} catch(ParseException e) {
            		return false;
        	}
    	}

	/**
          * Exécution
          */
    	public static void main(String [] args) {
		/**
                  * Vérifier la validité de la ligne de commande.
                  */
		if (args.length != 3) {
			System.err.println ();
			System.err.println ("usage  : Algorithm day month year");
			System.err.println ();
			System.err.println ("exemple: Algorithm 16 09 1982");
			System.err.println ("\7");
			System.exit (1);
		}

		String pattern = "dd/MM/yyyy";
		String date = "";	
		
		/**
                  * Récupérer les arguments fournit par la ligne de commande et le remettre
                  * sous la forme "dd/MM/yyyy" pour que cette date respecte notre patron
                  * exemple : une date 1 2 1980 sera mis comme ceci : 01/02/1982
                  * on vérifie bien qu'elle est "sous" la forme "dd/MM/yyyy"
                  */
		if (args [0].length () == 1) {
			date += "0";
		}
		date += args [0] + "/";
		
		if (args [1].length () == 1) {
			date += "0";
		}
		date += args [1] + "/";		
		date += args [2];

		/**
                  * Tester la validité de la date fournit par la ligne de commande.
                  */
		if (!dateEstValide (date, pattern)) {
			System.err.println ();
			System.err.println ("La date saisie est invalide ...");
			System.err.println ("\7");
			System.exit (1);
		}
		else {
			String result;
                        result = Algorithm.formuleZeller (Integer.parseInt (args [0]),
                                                            Integer.parseInt (args [1]),
                                                            Integer.parseInt (args [2]));
			System.out.println ();
			System.out.print ("Le jour correspondant a la date " + date + " est : ");
			System.out.println (result);
		}
    	}
}

Conclusion

Merci à tous les amis du forums qui m'ont aidé à réaliser ce tout tout petit programme.
Je répète encore ce programme est un simple programme d'algorithmique, Vu que je suis encore débutant.

Et surtout sans oublier de dire Merci infiniment à A.
 

Historique

01 novembre 2007 16:20:46 :
Correction faite.
01 novembre 2007 16:23:52 :
Correction faite

Commentaires et avis

signaler à un administrateur
Commentaire de Stark le 15/10/2006 22:56:29

Salut,

Merci pour ton code, c'est super propre. Je connaissais pas la méthode de Zeller mais c'est pluôt efficace.

Il faut quand même être un sacré matheux pour pondre un algo de la sorte !

signaler à un administrateur
Commentaire de DarkKing le 03/03/2007 12:55:39

bien ...

signaler à un administrateur
Commentaire de Ombitious_Developper le 03/03/2007 13:04:24

merci, ce n'est rien d'autre que l'implémentation d'une formule.

signaler à un administrateur
Commentaire de Profite le 04/09/2007 14:17:09

La formule marche mais pas toujours.

Le 28/02/2007 me donne jeudi au lieu de lundi.

signaler à un administrateur
Commentaire de Ombitious_Developper le 01/11/2007 15:16:55

je vais le corriger.

signaler à un administrateur
Commentaire de Ombitious_Developper le 01/11/2007 16:27:51

Ok, c'est fait.

Le programme doit marcher maintenant sans aucun problème.

Merci pour la remarque.

signaler à un administrateur
Commentaire de esus1985 le 31/03/2008 16:13:46

desolé mais ca marche pas a tout les coups
il me donne mercredi 15 octobre 1985 hors c'etait un mardi.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

comparaison de deux dates [ par tarekcom ] Bonjour tout le monde,  voila j'ai ecrit ce code pour verifier si une date x est avant une date y ou non et j'obtient faux meme si la date x est préce Simpledateformat [ par deterred ] Bonjour,Je souhaite obtenir la date courante sous le format : Fri, 29 Dec 2006 23:57:10 +0100J'ai donc fait ceci : <b [DEBUTANTE] Formater et inserer une date dans une [ par mariafan ] Bonjour,Merci de bien vouloir m'aider à résoudre ce pb qui bloque l'avancement de mon projet.voilà, je travaille avec un BDD my SQL dans laquelle je d string to date [ par cid019 ] bonjour,voila j'ai une date au format String et je voudrais la convertir au format date. J'ai essayé avec un SimpleDateformat et la fonction parse, il mauvais format de date [ par nezdeboeuf62 ] bonjour a tous..j'ai un probleme pour manipuler des dates et surtout les formattées pour affichage.J'ai un object Calendar :        Calendar date=Cale Problème dans les Date avec SimpleDateFormat [ par Luc1an0 ] Bonjour à tous, pour vous situer le contexte, j'ai une application principale qui créer des dossiers chaque jour avec la date de ce meme jour. Une foi Probleme de conversion String -> Date avec SimpleDateFormat.parse(String) [ par zinZ ] Bonjour,J'ai une date sous forme de String que je converti en Date grace a SimpleDateFormat.parse(String)Le format de la date est "HHmmss.SSS"L'ennui Problème de dates [ par scaryman ] bonjour a tous, voila le code que j'utilise : &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Calendar cal = new GregorianCalendar(2005, 8, 8); //mettre le cal format de date [ par kazadialain ] Bonjour &#224; tous,J'ai un probl&#232;me,je desir convertir la date du format Timestamp au format (yyyy-mm-jj) ann&#233;e-mois-joursmer&#231;i Alka formater une date [ par malls ] "Java ça déchire tout"Il y aurait il quelq'un qui pourrais m'aider pour convertir une date de type String (parce que je la récupère depuis un formulai


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.