Ich habe versucht, einen Wert von Sekunden (in einer BigDecimal-Variablen) in eine Zeichenfolge in einem editText wie "1 Stunde 22 Minuten 33 Sekunden" oder etwas Ähnlichem zu konvertieren.
Ich habe das versucht:
String sequenceCaptureTime = "";
BigDecimal roundThreeCalc = new BigDecimal("0");
BigDecimal hours = new BigDecimal("0");
BigDecimal myremainder = new BigDecimal("0");
BigDecimal minutes = new BigDecimal("0");
BigDecimal seconds = new BigDecimal("0");
BigDecimal var3600 = new BigDecimal("3600");
BigDecimal var60 = new BigDecimal("60");
(Ich habe einen roundThreeCalc, der der Wert in Sekunden ist, also versuche ich ihn hier zu konvertieren.)
hours = (roundThreeCalc.divide(var3600));
myremainder = (roundThreeCalc.remainder(var3600));
minutes = (myremainder.divide(var60));
seconds = (myremainder.remainder(var60));
sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();
Dann setze ich den editText auf sequnceCaptureTime String. Aber das hat nicht funktioniert. Es erzwingt jedes Mal das Schließen der App. Ich bin hier total überfordert, jede Hilfe wird sehr geschätzt. Viel Spaß beim Codieren!
java
android
string
android-edittext
bigdecimal
Kaninchen
quelle
quelle
Antworten:
Sie sollten mehr Glück mit haben
Dadurch werden die Dezimalwerte nach jeder Division gelöscht.
Bearbeiten: Wenn das nicht funktioniert hat, versuchen Sie dies. (Ich habe es gerade geschrieben und getestet)
quelle
DateUtils.formatElapsedTime
...Ist es notwendig, ein BigDecimal zu verwenden? Wenn Sie nicht müssen, würde ich ein int oder long für Sekunden verwenden, und es würde die Dinge ein wenig vereinfachen:
Möglicherweise möchten Sie die einzelnen Zeichen auffüllen, um sicherzustellen, dass sie zweistellige Werte (oder was auch immer) in der Zeichenfolge enthalten.
quelle
String.format("%02d:%02d:%02d", hours, minutes, seconds);
String.format(Locale.ENGLISH, "%02d:%02d:%02d", hours, minutes, seconds)
DateUtils.formatElapsedTime
...DateUtils.formatElapsedTime(long)
, formatiert eine verstrichene Zeit in der Form "MM:SS
" oder "H:MM:SS
". Es gibt den gesuchten String zurück. Die Dokumentation finden Sie hierquelle
Hier ist der Arbeitscode:
quelle
DateUtils.formatElapsedTime
...Etwas wirklich hilfreiches in Java 8
quelle
Ich bevorzuge die in Java eingebaute TimeUnit- Bibliothek
quelle
quelle
Das ist meine einfache Lösung:
Test Results
::quelle
Ich mag es deshalb einfach zu halten:
Das Ergebnis ist: 01 Stunde 23 Minuten 20 Sekunden
quelle
Wenn Sie die Einheiten und für eine Dauer möchten
h
, können Sie dies verwenden:min
sec
Das sind viele bedingte Operatoren. Die Methode gibt die folgenden Zeichenfolgen zurück:
quelle
Dieser Code funktioniert einwandfrei:
quelle
Eine schöne und einfache Möglichkeit, dies mit GregorianCalendar zu tun
Importieren Sie diese in das Projekt:
Und dann:
quelle
Ich benutze das:
quelle
Hier ist meine Funktion, um das Problem anzugehen:
quelle
Ich weiß, das ist ziemlich alt, aber in Java 8:
quelle
Verwenden Sie dies für Minuten und Sekunden
quelle
Ich verwende dies in Python, um einen Float zu konvertieren, der Sekunden in Stunden, Minuten, Sekunden und Mikrosekunden darstellt. Es ist einigermaßen elegant und praktisch für die Konvertierung in einen Datetime-Typ über strptime zum Konvertieren. Bei Bedarf kann es auch problemlos auf längere Intervalle (Wochen, Monate usw.) ausgedehnt werden.
quelle
Ich habe den besten Weg und weniger Code ausprobiert, aber vielleicht ist es ein bisschen schwierig zu verstehen, wie ich meinen Code geschrieben habe, aber wenn Sie gut in Mathe sind, ist es so einfach
Unterrichtsstunden {
}}
mehr darüber ist genau!
quelle
Mit Java 8 können Sie leicht Zeit im String-Format von langen Sekunden wie erreichen,
Hier darf der angegebene Wert maximal konvertiert werden (bis zu 24 Stunden) und das Ergebnis ist
Vorteile: 1) Sie müssen nicht manuell konvertieren und 0 für eine einzelne Ziffer anhängen
Nachteile: Arbeiten Sie nur bis zu 24 Stunden
quelle
Mit Java 8 können Sie problemlos Zeit im LocalTime-Format aus langen Sekunden wie erreichen.
Hier darf der angegebene Wert maximal konvertiert werden (bis zu 24 Stunden) und das Ergebnis ist
Vorteile: 1) Sie müssen nicht manuell konvertieren und 0 für eine einzelne Ziffer anhängen
Nachteile: Arbeiten Sie nur bis zu 24 Stunden
quelle
Dauer von java.time
Die Ausgabe dieses Snippets lautet:
Wenn der
BigDecimal
Code einen Bruchteil der Sekunde ungleich Null enthalten hätte, hätte er in seiner jetzigen Form nicht funktioniert, aber Sie können ihn möglicherweise ändern. Der Code funktioniert in Java 9 und höher. In Java 8 ist die Konvertierung vonDuration
in Stunden, Minuten und Sekunden etwas wortreicher. Weitere Informationen finden Sie unter dem Link unten. Ich überlasse es Ihnen, die richtige Singular- oder Pluralform der Wörter ( Stunde oder Stunden usw.) zu wählen .Links
Duration
in Tage, Stunden, Minuten und Sekunden in Java 8.quelle