Calculer la Date/Heure Différence en Java considérant AM/PM
Je veux calculer la différence entre deux date/heure en java en utilisant la Date et le Calendrier des classes. Le format que j'ai, c'est "2012-01-24 12:30:00".
J'ai ajouté ma propre méthode et aussi une recherche sur google de travailler avec les autres, mais je n'ai pas le droit de faire allusion à la poignée de AM et PM valeurs.
La date/heure différence suis troublé à chaque fois que les temps ont 12(AM/PM). Par exemple si j'ai la date/l'heure "2012-01-24 12:30:00" et "2012-01-24 02:30:00", il montre la différence est de 10 heures.
Considérant le code de la ce lien comment peut-il être modifié pour gérer AM et PM.
Pour convertir la Chaîne de date à Date je utiliser le code suivant:
String sessionTimeStart = "2012-01-24 12:30:00 PM";
String sessionTimerEndOrCurrent = "2012-01-24 02:30:00 PM";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
Date d1 = null;
Date d0 = null;
try {
d1 = format.parse(sessionTimeStart);
d0 = format.parse(sessionTimerEndOrCurrent);
} catch (ParseException e1) {
//TODO Auto-generated catch block
e1.printStackTrace();
}
Date
objet? Et comment calculez-vous la différence? Si vous utilisez le code que vous avez lié, comment appelez-vous cela?J'ai mis à jour le post
OriginalL'auteur rizzz86 | 2012-01-25
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est votre format de date: au lieu de
yyyy-MM-dd HH:mm:ss a
utilisationyyyy-MM-dd hh:mm:ss a
.HH
va être l'heure de la journée (de 0 à 23) considérant quehh
va être l'heure AM/PM (1-12). Ainsi avec votre format de date à 02:30:00 va être analysée comme juste qu'au lieu de se convertir à l'H version (qui, à l'heure de la journée serait de 14:30:00).OriginalL'auteur Thomas
La raison pour laquelle il indique 10 heures que la différence, c'est que vous avez une erreur dans le modèle lors de l'analyse de l'entrée.
Voici un exemple d'utilisation
SimpleDateFormat
:Sera de retour
10
.Où nous venons de changer un peu le format de la date motif, à l'aide de
hh
pour l'heure am/pm (1-12) au lieu deHH
pour l'heure de la journée (de 0 à 23):Elle renvoie (attendus)
2
.Voir le documentation de
SimpleDateFormat
pour obtenir vos habitudes de droite.OriginalL'auteur hleinone
Donc, vous avez ces dates comme des chaînes de caractères? Les analyser avec un
SimpleDateFormat
avec la chaîne de format, et de calculer la différence en heures:Votre erreur, c'est que vous êtes en utilisant HH (24 heures heures) au lieu de hh (12 heures heures) dans votre chaîne de format.
OriginalL'auteur Jesper
Ne pas créer vous-même, utiliser un établi de la bibliothèque. Jodatime est largement utilisé.
OriginalL'auteur Hauke Ingmar Schmidt
onsidérez à l'aide de Apache Commons DateUtils DurationFormatUtils formatPeriod méthode de faire de la magie.
Bonne chance!
MODIFIER
En supposant que vous avez une Date et la Date b initialisé à ce point,
voir mon edit.
OriginalL'auteur aviad
Calendrier a une methode add() qui peut être utilisé pour soustrayant trop. Prendre un coup d'oeil. Vous devriez être en utilisant le Calendrier au lieu de la Date de toute façon parce que la plupart des opérations sont obsolètes.
Désolé, j'ai mal compris l'API. La pensée compareTo() retourne la différence en Millisecondes.
Trouvé une autre solution. Peut-être que cette fois, la bonne 😉
OriginalL'auteur André Stannek