Je crée mon application JavaFX et je dois utiliser l'étiquette de temps chaque fois qu'une nouvelle cellule de liste est créée. J'ai besoin de mettre la chaîne avec l'heure actuelle au format HH:MM
directement dans le constructeur de l'étiquette, qui prend String
en paramètre.
J'ai trouvé et utilisé le Java.util.Date
's:
Label timeLabel = new Label(new SimpleDateFormat("HH:MM").format(new Date()));
mais il affiche le mauvais fuseau horaire, je vais donc utiliser les classes Java.time
et LocalTime
.
Existe-t-il un moyen d'obtenir le même résultat en une seule ligne? Merci de votre aide :)
Il est probablement préférable d'utiliser les types Java 8 (Java.time) dans une nouvelle application. Vous pouvez d’abord créer un DateTimeFormatter
:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm");
Et puis obtenir l'heure actuelle et le formater:
Label timeLabel = new Label(LocalTime.now().format(dtf));
LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm"))
(ceci utilisera les paramètres régionaux par défaut, voir https://docs.Oracle.com/javase/8/docs/api/Java/time/format/DateTimeFormatter.html#ofPattern-Java.lang.String- pour plus).
Mais il serait préférable de placer le formateur dans un champ static final
. De cette façon, il est créé une seule fois au lieu de chaque fois que la ligne est exécutée. C’est presque certainement sans importance pour cette application, mais il est préférable d’utiliser de bonnes habitudes dès le début.
Essayez quelque chose comme ça:
Label timeLabel = new Label(String.format("%tR", LocalTime.now()));
Voir: http://docs.Oracle.com/javase/8/docs/api/Java/util/Formatter.html
Vous pouvez créer une instance LocalTime de plusieurs manières. La première consiste à créer une instance LocalTime qui représente l'heure exacte actuelle. Voici à quoi ça ressemble:
LocalTime localTime = LocalTime.now();
Un autre moyen de créer un objet LocalTime consiste à le créer à partir d’un nombre spécifique d’heures, de minutes, de secondes et de nanosecondes. Voici à quoi ça ressemble:
LocalTime localTime2 = LocalTime.of(21, 30, 59, 11001);
Il existe également d'autres versions de la méthode of () qui ne prennent comme paramètres que des heures et des minutes, ou des heures, des minutes et des secondes.
Vous pouvez accéder aux heures, minutes, secondes et nanosecondes d'un objet LocalTime à l'aide de ces méthodes:
vérifier cela, il m'a aidé beaucoup- http://tutorials.jenkov.com/Java-date-time/localtime.html