Bien le bonjour.
Quelqu'un aurait "sous la main" le code éprouvé d'une méthode examinant si un instant (exprimé en HH:MM) est compris entre deux valeurs de HH:MM et renvoyant true|false ?
Merci d'avance.
Bien le bonjour.
Quelqu'un aurait "sous la main" le code éprouvé d'une méthode examinant si un instant (exprimé en HH:MM) est compris entre deux valeurs de HH:MM et renvoyant true|false ?
Merci d'avance.
"Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)
Ouuhh le flemmard
Salut,
tu peux éventuellement convertir tes HH:mm en java.util.Date avec un SimpleDateFormat et utiliser les méthode before et after de 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.
Bonjour Nico02.
Flemmard, flemmard ... on soupçonne bien des complications et nombre de questions surgit quand on lit préalablement le "How to JFormattedTextField", le Formatter
et qu'on pense à la nécessité d'un JSpinner
et que c'est la première fois
et qu'il faut préparer sa valise pour partir en vacances ...
Bonjour Joël.drigo et merci pour le conseil.
Problème : Q1: Comment attribuer une valeur à un textField casté plus loin à un java.util.Date ? Pas d'erreur à la compilation (Java !), mais au 'run-time' :Cannot format given Object as a Date
ou encore
java.lang.String cannot be cast to java.util.DateQ2: Comment ne filtrer que "11:15" p.ex. d'un Date comprenant tous ses attributs (YY/mm/dd HH:mm:ss ...CET ...)
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 ... private JFormattedTextField textField5, textField6; private Date date_JAETHC, heure_DébutHPl, heure_FinHPl; ... label10 = new JLabel(); // Heures à plein tarif : de SimpleDateFormat formatDHeure = new SimpleDateFormat("HH:mm"); textField5 = new JFormattedTextField(formatDHeure); heure_DébutHPl = new Date(); textField5.setValue("07:00"); // Cannot format given Object as a Date textField5.setColumns(4); ... heure_DébutHPl = (java.util.Date) textField5.getValue(); heure_FinHPl = (java.util.Date) textField6.getValue(); Date heureTable = (java.util.Date) monModèleDeTable.getValueAt(2, 1); if ((heureTable.equals(heure_DébutHPl) || heureTable.after(heure_DébutHPl)) && (heureTable.before(heure_FinHPl))) System.out.println("Heures pleines"); else System.out.println("Heures creuses");Enfait, je cherche à savoir comparer rien que des HH:MM , qu'ils soient des String's ou des Date's.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Date heureTable = (java.util.Date) monModèleDeTable.getValueAt(2, 1);
Merci d'avance.
"Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)
Je ne comprends pas la question. Comment attributer une valeur à un JFormattedTextField (par setValue() donc) ou comment attribuer une valeur à un java.util.Date (setTime() ou passer par un Calendar) ?
Caster ? Caster quoi en quoi ? Un java.util.Date en JFormattedTextField ? Non, pas possible : ces 2 classes n'ont rien à voir (la seule classe en commun de leur hiérarchie, c'est java.lang.Object !)
Attention, si le before() et le after() peuvent marcher pour comparer des heures/minutes en comparant des dates, mais pour l'égalité vaut mieux éviter de la comparer par equals(), car il faut que les données soit exactement égales, donc les heures, les minutes, mais aussi les jours, les années, ainsi que les millisecondes, etc... !!!
Il y'a une date quelconque c'est ça dans ton modèle ? Soit tu utilises Calendar et tu peux récuper que l'heure et les minutes, soit tu formates et tu récupères tes heures et minutes, sous forme de chaines de char, sous la forme justement "HH:mm". Mais c'est un peu un hack. Surtout si c'est pour repasser en heure et minutes derrière pour comparer. A ta première question, je pensais que tu avais des chaines en entrée : c'est pour ça que j'ai parlé de SimpleDateFormat, pour obtenir des java.util.Date à comparer.
Là tu pars d'un JFormattedTextField qui te permettent de récupérer directement un java.util.Date, tu as des java.util.Date dans tes données, et tu peux extraire l'heure et les minutes de tes dates par un Calendar.
Ensuite, on peut facilement écrire une comparaison d'heures et minutes stockées dans 2 int (comparaison en cascade, si les heures sont égales, on compare les minutes, sinon on compare les heures, et pour l'intervalle, on comparer à la borne inférieur, et à la borne supérieur, en pensant à la problématique du repassage à zéro des heures à minuit, si ce cas est possible avec tes données)
[/quote]
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.
setValue() prend un objet convertissable en String via le formatter passé en paramètre. Il ne prend pas directement une String. donc le code devrait être:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SimpleDateFormat formatDHeure = new SimpleDateFormat("HH:mm"); JFormattedTextField textField5 = new JFormattedTextField(formatDHeure); textField5.setValue(formatDHeure.parseObject("07:00")); // Et la ça marcheA la main: splitter sur les espace et les :Q2: Comment ne filtrer que "11:15" p.ex. d'un Date comprenant tous ses attributs (YY/mm/dd HH:mm:ss ...CET ...)
Pourquoi? Parce que si tu te contente de parser le tout avec un formatter, un java.util.Date n'as pas de timezone, il est sur la timezone GMT, donc si l'heure était formatté en CET, tu risque de perdre 1 à 2 h en rammenant à GMT.
Bonjour Joël.Drigo et Tchize,
et merci pour vos réponses qui m'ont permis d'aboutir.
Zyeutez un peu la solution :J'espère que ce code servira à d'autres 'bleus en Java'.
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 private SimpleDateFormat formatDHeure; private Date heure_DébutHPl, heure_FinHPl, heureTable; ... formatDHeure = new SimpleDateFormat("HH:mm"); label10 = new JLabel(); // Heures à plein tarif : de textField5 = new JFormattedTextField(formatDHeure); heure_DébutHPl = new Date(); try { textField5.setValue(formatDHeure.parseObject("07:00")); } catch (ParseException e) { System.out.println(e); } textField5.setColumns(4); textField5.setHorizontalAlignment(JTextField.CENTER); label11 = new JLabel(); // à textField6 = new JFormattedTextField(formatDHeure); heure_FinHPl = new Date(); try { textField6.setValue(formatDHeure.parseObject("21:00")); } catch (ParseException e) { System.out.println(e); } textField6.setColumns(4); textField6.setHorizontalAlignment(JTextField.CENTER); heureTable = new Date(); ... String valeurPuissHasard = monModèleDeTable.getValueAt(3, 1).toString(); // HH:mm soumis au test heure_DébutHPl = (java.util.Date) textField5.getValue(); // Found : Object --> cast heure_FinHPl = (java.util.Date) textField6.getValue(); try { heureTable = (java.util.Date) formatDHeure.parseObject(valeurPuissHasard); } catch (ParseException err) { System.out.println(err); } if ((heureTable.after(heure_DébutHPl) /* || heureTable.equals(heure_DébutHPl) */) && (heureTable.before(heure_FinHPl))) System.out.println("En heures pleines : " + heureTable); else System.out.println("En heures creuses : " + heureTable); ...
En fait, cette discussion est à sortir de 'AWT/Swing et à déplacer vers 'Général Java'.
Merci encore, surtout à Tchize (une fois de plus).
"Ah oui ! Juste encore cette toute dernière petite question ..." (Columbo - Peter Falk)
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