Calculer diff. entre deux temps étant donné que nous avons deux chaînes pour l'heure et la date
J'ai des données en temps partagé en deux cordes, l'une chaîne pour la date, et un pour le temps.
Je veux calculer la diff. de ces deux fois en Java.
par exemple,
- temps 1:"26/02/2011" et de "11:00"
- temps 2:"27/02/2011" et "12:15 AM"
Différence serait de 13 heures et 15 minutes.
Vous devez vous connecter pour publier un commentaire.
Obs: Ce n'est valable qu'une aproximation. Voir Perdre du Temps sur le Chemin de Jardin.)
Unparseable date: "26/02/2011 11:00 AM"
. C'est parce que vous utilisez-
de formateur et/
dans la chaîne de date.sortie
Vous devez d'abord convertir les chaînes de caractères à
java.util.Date
objets (à l'aide deSimpleDateFormat.parse(String)
par exemple). Ensuite, vous pouvez utiliserDate.getTime()
pour chacune des deux occurrences de Date que vous avez analysé et calculer la différence en millisecondes ou de faire usage d'unjava.util.Calendar
ou la joda time API pour des calculs avancés.yyyy-MM-dd hh:mm
. Jetez un oeil à laSimpleDateFormat
javadoc. tiagoinu réponse du soufflet contient un exemple concret.Ont un coup d'oeil à DateFormat, vous pouvez l'utiliser pour analyser vos chaînes avec le parse(String source) la méthode et la vous pouvez manipuler facilement les deux Dates de l'objet pour obtenir ce que vous voulez.
Le pour afficher la Date :
essayer celui-ci
vous pouvez calculer le nombre de jours,heures et minutes
et l'utiliser comme
tl;dr
Voir code en direct en IdeOne.com.
Fuseau horaire
La Question et l'autre Répond à toutes ignorer la question cruciale de la zone de temps. Vous ne pouvez pas calculer le temps écoulé entre deux dates-temps chaînes sans connaître la date prévue de la zone. Par exemple, dans les lieux à l'Heure d'été (DST), dans la nuit de la coupe, un jour peut-être 23 heures ou 25 heures au lieu de 24 heures.
java.temps
La manière moderne de faire de la date du temps de travail est de java.les classes de temps. Ces supplanter le gênants de longue date du temps des classes comme
java.util.Date
etjava.util.Calendar
.Local…
D'abord analyser les chaînes d'entrée. Ces absence de toute indication du fuseau horaire, de sorte que nous les analyser comme
Local…
types.Définir un
DateTimeFormatter
pour correspondre à votre chaîne entrées. Par ailleurs, à l'avenir, l'utilisation standard ISO 8601 formats lors de la sérialisation de date-heure de valeurs de texte.ZoneId
Vous avez besoin de savoir l'horaire prévu par votre scénario d'entreprise. Je vais choisir arbitrairement un.
Spécifier un fuseau horaire nom dans le format de
continent/region
, commeAmerica/Montreal
,Africa/Casablanca
, ouPacific/Auckland
. Ne jamais utiliser de l'3-4 abréviation commeEST
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).ZonedDateTime
Appliquer la zone pour obtenir un
ZonedDateTime
.Duration
Faire de même pour obtenir un
zdtStop
. Calculer le temps écoulé un laps de temps qui n'est pas attachée à la chronologie, dans unDurée
.Appel
toString
pour générer une Chaîne de caractères dans la norme ISO 8601 pour des durées:PnYnMnDTnHnMnS
. LeP
marque le début alors que leT
sépare les deux parties.En Java 9 et plus tard, appel de la
to…Part
méthodes pour accéder à chaque composant.Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.