web-dev-qa-db-fra.com

Java getHours (), getMinutes () et getSeconds ()

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.

77
mel

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!

173
user998692

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

Formaté

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));
31
blueberry0xff

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

9
user2003461