Bonjour à tous, j'éprouve beaucoup de difficulté pour manipuler les dates dans mon programme java.
1 - Pour commencer je voudrais que l'utilisateur puisse saisir une date de départ et une date de fin. Pour se faire j'ai utilisé les objets de types JSpinner :
Donc dans ce code, mes JSpinner sont initialisés au format date française jour/mois/année. Ma première difficulté est pour lire la valeur sélectionnée dans le JSpinner. Voici le code que j'essaye de mettre en place mais cela ne fonctionne pas car je pense que c'est un problème de format de date ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 spDateDeb = new JSpinner(new SpinnerDateModel(dateJour, dateMin, dateMax, Calendar.YEAR)); spDateDeb.setEditor(new DateEditor(spDateDeb, "dd/MM/yyyy")); spDateFin = new JSpinner(new SpinnerDateModel(dateJour, dateMin, dateMax, Calendar.YEAR)); spDateFin.setEditor(new DateEditor(spDateFin, "dd/MM/yyyy"));
2 - Ensuite je voudrais connaitre le numéro du jour, si c'est un lundi je voudrais que le numéro du jour soit 1 mardi 2 ... et dimanche 7.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.sql.Date dateInc = (Date) spDateDeb.getValue();
Pour se faire, j'utilise des objets de types GregorianCalendar :
Le problème est que le dimanche est le jour numéro 1 de la semaine au USA alors que moi je souhaiterai que ce soit le lundi. Existe t'il une solution assez simple pour répondre à mon besoin? Pour l'instant j'ai fais cette petite bidouille pour obtenir le résultat souhaité :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 GregorianCalendar cal = new GregorianCalendar(); cal.setTime(dateJour); int numJour = cal.get(Calendar.DAY_OF_WEEK);
3 - Enfin pour finir, je souhaiterai connaitre le nombre de semaine qui sépare ma date de début et ma date de fin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int numJour = cal.get(Calendar.DAY_OF_WEEK) == 1 ? 7 : cal.get(Calendar.DAY_OF_WEEK) - 1
Ce code marche bien dans la plupart des cas mais mon problème principal est que je voudrais qu'il compte les semaines civiles du lundi au dimanche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 long diff = dateFin.getTime() - dateDeb.getTime(); long nbJour = (diff / (1000 * 60 * 60 * 24)); long nbSemaine = nbJour / 7;
Par exemple si la date de début est dimanche 24 décembre 2010 et la date de fin est le lundi 25 décembre 2010, je voudrais qu'il compte 1 semaine car le dimanche est le dernier jour de ma première semaine. En Visual Basic, il existait une fonction DateDiff qui prenait en paramètre la date de début, la date de fin et le premier de jour de la semaine civile.
Existe t-il une fonction similaire en Java?
L'application que je développe devra faire beaucoup de calcul en fonction de dates et je trouve la manipulation de dates assez complexe comme pour tous les langages.
Partager