Bonjour;
J'ai un variable date1 de type String qui contient une date Exp:date1="2012/12/10 09:55:47" ;
je voudrais savoir combien de jours séparent
cet date et la date d' aujourd'hui
Merci d'avance pour votre aide
Bonjour;
J'ai un variable date1 de type String qui contient une date Exp:date1="2012/12/10 09:55:47" ;
je voudrais savoir combien de jours séparent
cet date et la date d' aujourd'hui
Merci d'avance pour votre aide
Pour récupérer une date avec ton champ de teste là, va faire un tour sur la FAQ. Après, il ne te reste plus qu'à soustraire la date du jour avec ta date nouvellement créée. Puis identifier le nombre de jour.
Tu peux tout simplement faire une soustraction avec la méthode getTime() si tu veux une solution simple.
PS : En tout cas, à mon avis, le net doit regorger de ce genre d'exemple.
Responsable Java de Developpez.com (Twitter et Facebook)
Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
--------
Architecte Solution
LinkedIn : https://www.linkedin.com/in/nicolascaudard/
Une discussion résolue.
A+.
tous d'abord Merci ...
je résoudre le problème par cet fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public int calcule_date(String date) { String dateToday=null; DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); dateToday=dateFormat.format(date);//date systeme long nbDaysFirstDate=0; long nbDaysSecondDate=0; Date d1= dateFormat.parse(dateToday); Date d2=dateFormat.parse(date); long DayInMillisecond=24*60*60*1000; nbDaysDate1=d1.getTime()/DayInMillisecond; nbDaysDate2=d2.getTime()/DayInMillisecond; String NBjour=Long.toString(nbDaysDate1-nbDaysDate2); return Integer.parseInt(NBjour); }
Il y a pas mal de problèmes :
- Ça ne compile pas
=> il y a un paramètre String date et une variable Date date. On ne peut pas avoir des variables ou paramètres de même nom.
=> tu confonds nbDaysFirstDate, nbDaysSecondDate, nbDaysDate1 et nbDaysDate2
=> DateFormat.parse() doit déclarer ParseException, ce que tu ne fais pas.
- Ça tourne autour du pot
=> Ça ne sert à rien de créer une new Date(), puis la formater, puis la parser. T'as fait un tour pour rien. Tu pouvais faire directement :
et du coup dateToday ne sert à rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Date d1 = new Date();
=> Les lignes
ne sont pas bien claires. Remplacer par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String NBjour=Long.toString(nbDaysDate1-nbDaysDate2); return Integer.parseInt(NBjour);
- Bon, sinon il ne tient pas compte des changements d'heure et du fait qu'un jour calendaire ne fait pas forcément 24 heures. Mais c'est peut-être voulu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 long nbJours = nbDaysDate1 - nbDaysDate2; if(nbJours < Integer.MIN_VALUE || nbJours > Integer.MAX_VALUE) { throw new IllegalArgumentException("La différence en jours dépasse la capacité d'un int") } return (int)nbJours;
Que penses-tu de cette methode?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; public final class Utils { public static Integer getNumberDaysBetweenFromToday(String dateToCount, String date_formattage){ Integer nb_days = null; DateFormat df = new SimpleDateFormat(date_formattage, Locale.FRANCE); Date dateToCountFormatted = null; Date currentDate = null; try { dateToCountFormatted = df.parse(dateToCount); String currentDateString = df.format(new Date()); currentDate = df.parse(currentDateString); Calendar gcDateToCount = new GregorianCalendar(); gcDateToCount.setTime(dateToCountFormatted); Calendar gcToday = new GregorianCalendar(); gcToday.setTime(currentDate); nb_days = (int) ((gcToday.getTime().getTime() - gcDateToCount.getTime().getTime()) / (1000 * 60 * 60 * 24)); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return nb_days; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class MyMain { /** * @param args */ public static void main(String[] args) { System.out.println(Utils.getNumberDaysBetweenFromToday("31/11/2012","dd/MM/yyyy")); System.out.println(Utils.getNumberDaysBetweenFromToday("20/12/2011","dd/MM/yyyy")); System.out.println(Utils.getNumberDaysBetweenFromToday("12/12/2012","dd/MM/yyyy")); } }
Resultat dans la console :
19
366
8
Pour ton cas le :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.out.println(Utils.getNumberDaysBetweenFromToday("2012/12/10 09:55:47","yyyy/MM/dd HH:mm:ss"));
Resultat dans la console :
10
![]()
Partager