begin process at 2010 02 10 12:23:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths et Algorithmes

 > JOUR ASSOCIÉ À UNE DATE DONNÉE

JOUR ASSOCIÉ À UNE DATE DONNÉE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :19/10/2009 17:19:03 Vu :8 712

Auteur : Ombitious_Developper

Ecrire un message privé
Commentaire sur cette source (10)
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/dic t_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 + 2.6d*(mm + 1) + cc/4 - 2*cc + yy + 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 + 2.6d*(mm + 1) + cc/4 - 2*cc + yy + 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
19 octobre 2009 17:19:03 :
Correction d'une petite bug de calcul.

 Sources du même auteur

Source avec Zip Source avec une capture DRAG-DROP UNE FORME GÉOMETRIQUE
Source avec Zip Source avec une capture EJECTER / FERMER CD-ROM / DVD-ROM (JNI + WINDOWS)
Source avec Zip LOUPE EN JAVA

 Sources de la même categorie

Source avec Zip CLASSE MATRICE par frankladen11
Source avec Zip Source avec une capture RÉSOLUTION D'ÉQUATION GRÂCE AU CALCUL DES DÉTERMINANTS par frankladen11
Source avec Zip TYPE DE DONNÉES ABSTRAIT GRAPHE par smutsonberg
Source avec Zip Source avec une capture SIMPLEXE ET DUAL par MrRenaud
Source avec Zip ALGORITHME DE BELLMAN, CALCUL DES TEMPS AU PLUS TÔT ET RECHE... par michaelcourcy2005

 Sources en rapport avec celle ci

Source avec Zip SÉLECTEUR DE DATES MULTIPLES, ORIGINE UHRAND par William44290
ADDITION SUR UNE DATE par shyrachtz
Source avec Zip Source avec une capture CALENDRIER par Shibo_Sources
Source avec Zip Source avec une capture COMMANDE "CAL" SOUS *UX par dje_jay
OBTENIR DATE ET HEURE par danimo

Commentaires et avis

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 !

Commentaire de DarkKing le 03/03/2007 12:55:39

bien ...

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.

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.

Commentaire de Ombitious_Developper le 01/11/2007 15:16:55

je vais le corriger.

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.

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.

Commentaire de mixday le 19/10/2009 17:12:41

Marche pas à tous les coups ! ex: 19/10/2009
Solution : enlever les Math.round

Commentaire de Ombitious_Developper le 19/10/2009 17:20:30

Correction faite.

Merci Mixday.

Commentaire de Ombitious_Developper le 19/10/2009 17:22:07

Je suis vraiment Désolé. :-) lol

 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

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales