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.
Partager