2016-04-25 6 views
4

Ich versuche, die Anzahl der Stunden zwischen zwei Mal in Java zu zählen. Ich verwende die joda Zeitbibliothek, um es zu formatieren. Das Programm kann mal in Textfelder eingegeben ziehen & sie in localtime Variablen setzen:Korrekte Format für Stunden zwischen zwei Mal in Java

LocalTime startTime1; 
LocalTime airTime1; 
LocalTime foamTime1; 
LocalTime scTime1; 

Ein Start-Taste führt dann die folgende

DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm"); 
startTime1 = formatter.parseLocalTime(startField2.getText()); 
airTime1 = formatter.parseLocalTime(airField.getText()); 
foamTime1 = formatter.parseLocalTime(fTimeField2.getText()); 
scTime1 = formatter.parseLocalTime(remainingField2.getText()); 

ich dann die Zeit zwischen airTime1 und startTime1 & Uhr berechnet werden soll versuchen, das folgende zu verwenden:

DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm"); 
Minutes difference = ((Minutes.minutesBetween(airTime1,startTime1))); 
LocalTime remaining1 = formatter.parseLocalTime(difference); 

Verbleibende 1 sollte dann die Zeitdauer zwischen airTime1 012 haltenstartTime1. Rest wird dann in ein Bild schreiben

Graphics g = image2.getGraphics(); 
g.setFont(g.getFont().deriveFont(30f)); 
g.drawString((String.valueOf(remaining1)), 100, 100); 
g.dispose(); 

Ich am Ende mit einem Fehler, dass Minuten nicht in Zeichenfolge konvertiert werden können. Welchen Variablentyp muss ich verwenden, um dies zum Laufen zu bringen?

Dank

+0

Was möchten Sie in resting1 speichern? – sebenalern

+0

Die Zeitdauer zwischen dem airTime1 und startTime1 – Will

+0

Wir könnten dies mehr in Chat https://chat.stackoverflow.com/rooms/110302/correct-format-for-hours-between-two-times-in-java[link diskutieren ] – sebenalern

Antwort

0

Das grundlegende Problem in Sie laufen, ist, dass eine Zeitdauer ein besonderes Konzept aus einer aktuellen Datum-Zeit ist. Die Zeilen

sind nicht sinnvoll, da die Idee, eine Dauer in ein Datum-Uhrzeit-Format zu konvertieren, keinen Sinn ergibt. Was ist die Datum-Uhrzeit, die beispielsweise "3 Minuten" repräsentiert? Das Nächste, was ich mir vorstellen kann, ist ein Paar Datum-Zeiten, eine für den Anfang und eine für das Ende, aber das war es, was Sie bereits hatten.

Die Minutendarstellung (oder möglicherweise the Hours representation, basierend auf Ihrem angegebenen Anwendungsfall) ist eigentlich, was Sie wollen, wie es ist, ich denke, Sie sind nur darüber nachzudenken. Sie brauchen es nicht weiter zu konvertieren, verwenden Sie es einfach, um die gewünschte Zeichenfolge zu erstellen:

// Get difference, same as before 
Minutes difference = ((Minutes.minutesBetween(airTime1,startTime1))); 
// Create string representation of difference 
// (Minutes.toString() representation exists but is hard to read) 
String diffStr = difference.getMinutes()/60.0 + " hours" // for, e.g., "3.5 hours" 

// Re-use your old graphics code with new string 
Graphics g = image2.getGraphics(); 
g.setFont(g.getFont().deriveFont(30f)); 
g.drawString(diffStr, 100, 100); 
g.dispose(); 
Verwandte Themen