tl; dr
Duration.parse("PT2H30M")
ISO 8601
Si vous êtes prêt à redéfinir vos formats d'entrée souhaités, je suggère d'utiliser le déjà- formats existants définis par la norme ISO 8601.
Le modèle PnYnMnDTnHnMnS
utilise un P
pour marquer le début, un T
pour séparer toute partie années-mois-jours de toute partie heures-minutes-secondes.
Une heure et demie est PT1H30M
, par exemple.
java.time
Les classes java.time utilisent les formats ISO 8601 par défaut lors de l'analyse/génération de chaînes.Cela inclut les classes Period
et Duration
pour représenter les plages de temps non liées à la chronologie.
Duration d = Duration.ofHours(1).plusMinutes(30);
String output = d.toString();
Aller dans l'autre direction, analyser une chaîne.
Duration d = Duration.parse("PT1H30M");
Voir live code in IdeOne.com.
Voir my similar Answer à similar Question.
A propos java.time
Le cadre java.time est construit en Java 8 et versions ultérieures. Ces classes supplantent les classes date de temps anciens legacy gênants tels que java.util.Date
, Calendar
, & SimpleDateFormat
. Le projet Joda-Time, maintenant en maintenance mode, conseille la migration vers les classes java.time.
Pour en savoir plus, voir le Oracle Tutorial. Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310.
Où obtenir les classes java.time?
- Java SE 8 et SE 9 et plus tard
- intégré.
- Partie de l'API Java standard avec une implémentation groupée.
- Java 9 ajoute quelques fonctionnalités et corrections mineures.
- Java SE 6 et SE 7
- Une grande partie de la fonctionnalité de java.time est de retour à Java 6 Ported .
- Android
Le projet ThreeTen-Extra java.time étend avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts futurs à java.time. Vous pouvez trouver ici des classes utiles telles que Interval
, YearWeek
, YearQuarter
et more.
@ultrajohn, merci pour votre contribution, mais sa partie des exigences qu'il doit être dans un domaine, et que le format est tel que je l'ai décrit dans la question. – bguiz