Comment puis-je analyser une heure de format hh:mm:ss
, entré sous forme de chaîne pour obtenir uniquement les valeurs entières (en ignorant les deux-points) en java?
Selon le commentaire de Basil Bourque, il s'agit de la réponse mise à jour pour cette question, en tenant compte de la nouvelle API de Java 8:
String myDateString = "13:24:40";
LocalTime localTime = LocalTime.parse(myDateString, DateTimeFormatter.ofPattern("HH:mm:ss"));
int hour = localTime.get(ChronoField.CLOCK_HOUR_OF_DAY);
int minute = localTime.get(ChronoField.MINUTE_OF_HOUR);
int second = localTime.get(ChronoField.SECOND_OF_MINUTE);
//prints "hour: 13, minute: 24, second: 40":
System.out.println(String.format("hour: %d, minute: %d, second: %d", hour, minute, second));
Remarques:
====== Voici l'ancienne réponse (originale) à cette question, en utilisant l'API pré-Java8: =====
Je suis désolé si je vais déranger quelqu'un avec ça, mais je vais en fait répondre à la question. Les API Java sont assez énormes, je pense qu'il est normal que quelqu'un en manque de temps en temps.
Un SimpleDateFormat pourrait faire l'affaire ici:
http://docs.Oracle.com/javase/7/docs/api/Java/text/SimpleDateFormat.html
Cela devrait être quelque chose comme:
String myDateString = "13:24:40";
//SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
//the above commented line was changed to the one below, as per Grodriguez's pertinent comment:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date date = sdf.parse(myDateString);
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
int hour = calendar.get(Calendar.HOUR);
int minute; /... similar methods for minutes and seconds
Les pièges que vous devez connaître:
le modèle que vous passez à SimpleDateFormat peut être différent de celui de mon exemple en fonction des valeurs que vous avez (sont les heures au format 12 heures ou au format 24 heures, etc.). Regardez la documentation dans le lien pour plus de détails à ce sujet
Une fois que vous avez créé un objet Date à partir de votre chaîne (via SimpleDateFormat), ne soyez pas tenté d'utiliser Date.getHour (), Date.getMinute () etc. Ils peuvent sembler fonctionner parfois, mais dans l'ensemble, ils peuvent donner de mauvais résultats et, en tant que tels, sont désormais obsolètes. Utilisez plutôt le calendrier comme dans l'exemple ci-dessus.
Un peu bavard, mais c'est la façon standard d'analyser et de formater les dates en Java:
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
try {
Date dt = formatter.parse("08:19:12");
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
} catch (ParseException e) {
// This can happen if you are trying to parse an invalid date, e.g., 25:19:12.
// Here, you should log the error and decide what to do next
e.printStackTrace();
}
String time = "12:32:22";
String[] values = time.split(":");
Cela prendra votre temps et le divisera là où il verra deux points et mettra la valeur dans un tableau, vous devriez donc avoir 3 valeurs après cela.
Ensuite, parcourez le tableau de chaînes et convertissez chacun. (avec Integer.parseInt
)
Si vous souhaitez extraire les heures, les minutes et les secondes, essayez ceci:
String inputDate = "12:00:00";
String[] split = inputDate.split(":");
int hours = Integer.valueOf(split[0]);
int minutes = Integer.valueOf(split[1]);
int seconds = Integer.valueOf(split[2]);