Comme je le sais, getHours()
, getMinutes()
et getSeconds()
sont tous déconseillés dans Java) et sont remplacés par Calendar.HOUR_OF_DAY
, Calendar.MINUTE
, Calendar.SECOND
.
Ceux-ci retourneront en fait l'heure, la minute et la seconde pour ce moment particulier. Cependant, je voudrais récupérer les heures et les minutes d'une variable Date. Par exemple,
dire le temps récupéré de la base de données est
time = Thu Jan 01 09:12:18 CET 1970;
int hours = time.getHours();
int minutes = time.getMinutes();
int seconds = time.getSeconds();
En récupérant les heures, les minutes et les secondes, je reçois
hours = 9
minutes = 12
seconds = 18
Alors, comment utiliser le calendrier pour cette fonction? Bien que la getHours()
ait été déconseillée, elle a quand même fonctionné. J'aimerais quand même savoir s'il existe une alternative à cela.
Essaye ça:
Calendar calendar = Calendar.getInstance();
calendar.setTime(yourdate);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
Modifier:
hours, minutes, seconds
ci-dessus seront les heures, les minutes et les secondes après la conversion de yourdate
en fuseau horaire du système!
Java 8
System.out.println(LocalDateTime.now().getHour()); // 7
System.out.println(LocalDateTime.now().getMinute()); // 45
System.out.println(LocalDateTime.now().getSecond()); // 32
Calendrier
System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY)); // 7
System.out.println(Calendar.getInstance().get(Calendar.MINUTE)); // 45
System.out.println(Calendar.getInstance().get(Calendar.SECOND)); // 32
Joda Time
System.out.println(new DateTime().getHourOfDay()); // 7
System.out.println(new DateTime().getMinuteOfHour()); // 45
System.out.println(new DateTime().getSecondOfMinute()); // 32
Java 8
// 07:48:55.056
System.out.println(ZonedDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
// 7:48:55
System.out.println(LocalTime.now().getHour() + ":" + LocalTime.now().getMinute() + ":" + LocalTime.now().getSecond());
// 07:48:55
System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));
// 074855
System.out.println(new SimpleDateFormat("HHmmss").format(Calendar.getInstance().getTime()));
// 07:48:55
System.out.println(new Date().toString().substring(11, 20));
Pour un décalage horaire, notez que le calendrier commence le 01.01.1970, 01:00 et non à 00:00. Si vous utilisez Java.util.Date et Java.text.SimpleDateFormat, vous devrez compenser pour une heure:
long start = System.currentTimeMillis();
long end = start + (1*3600 + 23*60 + 45) * 1000 + 678; // 1 h 23 min 45.678 s
Date timeDiff = new Date(end - start - 3600000); // compensate for 1h in millis
SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm:ss.SSS");
System.out.println("Duration: " + timeFormat.format(timeDiff));
Cela va imprimer:
Durée: 1: 23: 45.678