Bonjour,
Je dois calculer la difference en jours entre deux dates, ces dates sont saisies dans les jTextField de mon formulaire
Est ce que quelqu'un peut me dire comment faire?
Bonjour,
Je dois calculer la difference en jours entre deux dates, ces dates sont saisies dans les jTextField de mon formulaire
Est ce que quelqu'un peut me dire comment faire?
Salut,
Un JTextField étant fait pour saisir une chaîne, il va te falloir convertir la chaîne en date, ce qui implique que la saisie respecte un format précis (ou plusieurs éventuellement, en essayant de convertir avec différents formats). Il y a d'autres types de composants qui te permettront de saisir directement un date (comme un JSpinner avec un SpinnerDateModel, ou des composants externes, comme JCalendar de Toedter).
Pour convertir une chaîne provenant d'une JTextField en date, donc :
Pour faire la différence :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy"); // format jour / mois / année LocalDate date1 = LocalDate.parse(jtextfield1.getText(), format); LocalDate date2 = LocalDate.parse(jtextfield2.getText(), format);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Period period = Period.between(date1, date2); System.out.println(period.getDays()+" jour(s)"); System.out.println(period.getMonths()+" mois"); System.out.println(period.getYears()+" année(s)");
Si tes dates contiennent des heures, minutes, secondes... il faudra utiliser un LocalDateTime au lieu d'un LocalDate et un format adapté :
Et pour la différence :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"); LocalDateTime date1 = LocalDateTime.parse(jtextfield1.getText(), format); LocalDateTime date2 = LocalDateTime.parse(jtextfield2.getText(), format);
Si tu as besoin de la différence dans une unité, par exemple, en jours (cela fonctionne aussi bien pour LocalDate que pour LocalDateTime) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Duration duration = Duration.between(date1, date2); System.out.println(duration.getSeconds()+" seconde(s)");
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.out.println(ChronoUnit.DAYS.between(date1, date2)+" jour(s)");
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bonsoir,
J'ai essaye le code que vous m'avez passé mais il me donne ca:
sachant que cette date est recuperée de la base de donne et j'ai a faire une difference entre cette date et une autre qui est sur mon formulaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.time.forma.DateTimeParseException:Text "2017/09/09"could not be parsed at index 4
Forcément, comme je te l'ai indiqué, l'exemple était pour le format jour/mois/année : ..."dd/MM/yyyy"); // format jour / mois / année. Voir la documentation pour adapter le format (ou un peu d'observation...).
Si la date est récupérée depuis une base de données, en théorie, la date est stockée en type date, donc pas besoin de la parser. En revanche, tu vas récupérer un java.sql.Date, pas un LocalDate. Donc il faudra convertir l'un ou l'autre (le plus simple de java.sql.Date vers LocalDate, pour pouvoir faire la différence). Voir tutoriel pour savoir comment on fait (toLocalDate(java.sql.Date)).
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
voici mon code, je n'arrive pas a voir l'erreur!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 String sql="select Dat_recrut from employe where Id_emp='"+badge.getText()+"'"; p=connect.connecterDB().createStatement(); res=p.executeQuery(sql); while(res.next()){ String datrecrut=res.getString(1); System.out.println(datrecrut); DateTimeFormatter format=DateTimeFormatter.ofPattern("yyyy/MM/dd"); LocalDate d1=LocalDate.parse(datrecrut,format); LocalDate d2=LocalDate.parse(date.getText(),format); Period period=Period.between(d2,d1); int joursolde=period.getDays(); System.out.println(joursolde);
Ta date viens d'une DB, pas besoin de passer par une String pour en refaire une date. Utilise directement getDate(1)
Je ne peux pas mieux la voir que toi. S'il y a une erreur, il faut me donner l'intitullé.
Est-ce que tu es sure que la date est stockée en "String" dans la base (parce que c'est une mauvaise pratique : pas de possibilité de trier, filtrer par comparaison, afficher dans un format localisé, etc.). Et la date est bien une date, alors pour la récupérer c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.sql.Date datrecrut=res.getDate(1);
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bonsoir,
j'ai utilisé ceci pour la date que j'ai recupere de la base de donne:
et ca marche mais pour la date du systeme j'ai utilisé ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.sql.Date datrecrut=res.getDate(1); LocalDate d1=datrecrut.toLocalDate();
et ca me donne une erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part LocalDate d2=LocalDate.parse(date.getText(),format);
sachant que la date du systeme je l'ai recupere ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.time.format.DateTimeParseException:Text "2017/09/20" could not be parssed at index 5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Calendar cal=new GregorianCalendar(); int month=cal.get(Calendar.MONTH); int year=cal.get(Calendar.YEAR); int day=cal.get(Calendar.DAY_OF_MONTH); date.setText(year+"/"+(month+1)+"/"+day);
j'ai utilisé ceci pour la date que j'ai récupéré de la BDD:
et ca me donne pas d'erreurs mais pour la date du systeme que j'ai récupéré ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.sql.Date datrecrut=res.getDate(1); LocalDate d1=datrecrut.toLocalDate();
ca me donne cette erreure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Calendar cal=new GregorianCalendar(); int month=cal.get(Calendar.MONTH); int year=cal.get(Calendar.YEAR); int day=cal.get(Calendar.DAY_OF_MONTH); date.setText(year+"/"+(month+1)+"/"+day);
Ou est le probleme svp?
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.time.format.DateTimeParseException:Text"2017/09/20" could not be parssed at index 5
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager