2016-05-04 8 views
0

Ich versuche, die Dauer zwischen zwei mal mit dem folgenden Code zu finden:Seltsames Format von JodaTime wenn Zeitdifferenz mit Java Berechnung

    DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm"); 
         System.out.println(airTime1); 
         System.out.println(startTime1); 
        Minutes difference = ((Minutes.minutesBetween(startTime1,airTime1))); 
        String differenceS = String.valueOf(difference); 
         System.out.println(differenceS); 
        LocalTime remaining1 = formatter.parseLocalTime(differenceS); 
         System.out.println(remaining1); 

airTime1 & startTime1 sind beide Variablen localtime. Differenz sollte die Dauer zwischen den beiden Zeiten enthalten. differenceS ist eine String-Repräsentation der Differenz, da Minuten nicht in String konvertiert werden können.

Wenn ich mal in die Variablen wie & 00.00 13.00 eingeben, werden die Variablen aufgezeichnet, wie: 12: 00: 00.000 & 13: 00: 00.000, aber Unterschiede einen Wert von PT-60M empfangen, die Offensichtlich gibt es einen Fehler. Weiß jemand, warum die Minutenunterschiedslinie diesen Wert berechnen könnte?

Vielen Dank im Voraus!

+0

Does * difference.getMinutes() * nicht für Sie arbeiten? – Alexander

+0

Sie meinen mit difference.getMinutes wie folgt? Minutes difference1 = (difference.getMinutes (startTime1, airTime1)); – Will

+0

Nein. Die Klasse * Minutes * von jodatime bietet eine Methode * getMinutes() * ohne Parameter, die die Anzahl der Minuten zurückgibt, die als * int * -Wert dargestellt wird. Ist das nicht genau das, was du willst? – Alexander

Antwort

1

Die Minuten Klasse von jodatime überschreibt die Methode toString() in einer Weise, die eine Zeichenfolge in ISO8601-Format Dauer liefert, wie in der JavaDoc erwähnt. Dies ist genau das, was Ihre PT-60M darstellt. Eine Dauer von -60 Minuten.

Wenn Sie nur die rohen Minuten wollen Ihren Code gedruckt könnte wie folgt aussehen:

DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm"); 
System.out.println(airTime1); 
System.out.println(startTime1); 
Minutes difference = Minutes.minutesBetween(startTime1,airTime1); 
System.out.println(Math.abs(difference.getMinutes())); 
+0

Ah ich sehe! Wie würden Sie die Zeit vom ISO-Standard in einen Zeitstempel umwandeln? – Will

+0

Ich verstehe deine Frage nicht. * Minuten * ist ein relativer Zeitwert, während * Zeitstempel * ein absoluter Wert ist (ein eindeutiger Zeitpunkt). Sie können nicht von * Minuten * in * Zeitstempel * konvertieren, ohne irgendeinen Kontext anzugeben. – Alexander

+0

Ich denke, es muss meine Terminologie sein. Also, wenn es PT60M (positiver Wert dieses Mal) ausgibt, wie würden Sie es bekommen, um nur 60 anzuzeigen? – Will

Verwandte Themen