Wie kriege ich Sekunden richtig in Minuten(JavaScript)?
Wenn ich beispielsweise 320 Sekunden in Minuten anzeigen lassen möchte, sollte da stehen 5 Minuten und 20 Sekunden, also 320 Sek. => 5:20 Min. Allerdings rundet JavaScript auf und es wird mir nur 5 angezeigt. Frage: wie kriege ich hin, dass es mir korrekt als 5:20 und nicht nur als ''5'' angezeigt wird?
Im Screenshot ist mein Code zu sehen
Eine Erklärung dazu wäre noch nett, nicht nur bloß was zu ändern ist, Danke!
4 Antworten
Die sauberste Sache ist Java die Rechnerei mache zu lassen.
Java hat eine wunderbare Klasse für derartige Aufgaben : https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html
So sähe der Aufruf aus:
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
int seconds=359;
LocalTime time = LocalTime.ofSecondOfDay(seconds);
System.out.println(time);
}
}
Mathematisch:
public class Main {
public static void main(String[] args) {
int seconds=320;
// kassisce Mathematik (Rundung erfolgt bei der Stringformatierung %d automatisch)
// SekundenStelle: seconds % 60 => sekunden modulo 60
// Minutenstelle ohne Stunden: seconds / 60 => Sekunden dividiert durch 60
String myMinsSecStr=String.format("%d:%02d", seconds / 60, seconds % 60);
System.out.println("Minuten:Sekunden = " + myMinsSecStr);
//Minutenstelle mit Stunden: (seconds %% 3600) / 60 => (Sekunden modulo 3600) dividiert durch 60
//Stundenstelle: seconds / 3600 => Sekunden dividiert durch 3600
String myHrMinsSecStr=String.format("%d:%02d:%02d", seconds / 3600, (seconds % 3600) / 60, seconds % 60);
System.out.println("Stunden:Minuten:Sekunden = " + myHrMinsSecStr);
}
}
Minuten-Anzahl: seconds / 60
Anzahl restlicher Sekunden: seconds % 60
Also muss in deiner Funktion stehen:
return seconds/60 + " : " + seconds%60;
% ist der Remainder Operator. So wie man früher in der Schule gerechnet hat quasi.
Also die Grundschulerklärung: 5 % 3 wäre 2, weil die 3 ein mal in 5 "passt" und 2 übrig bleiben.
Hört sich zwar erst mal nutzlos an ist aber tatsächlich erstaunlich oft nützlich.
Kurz und knapp und vor allem verständlich erklärt, danke dir @BeamerBen!
- Es ist kein JavaScript, sondern Java, riesen Unterschied
- In der Programmierung rechnet man in Millisekunden (MS). 1 Sekunde = 1000 Millisekunden. 1 Min = 1000*60 und 5 Minuten 1000*60*5
Ist Millisekunde bereits in Java definiert oder muss ich das erst selbst festlegen?
Jeder Timer in Java sollte damit arbeiten. Millisekunden sind integer. Integer kurz int ist eine ganz Zahl. Wenn du kommszahlen herausbekommen möchtest, musst du mit float oder Double arbeiten
Generell korrekt, dennoch würde ich eventuell den Unterschied zwischen Int und Float erklären.
Es bringt dem Fragesteller nichts in Zukünftigen Projekten, wenn er aus einer Division eine Dezimalzahl erhalten und/oder verarbeiten möchte.
- Das ist Java, nicht JavaScript.
- Da wird nicht aufgerundet. Wenn überhaupt dann wäre es abgerundet, aber nichtmal das ist hier der Fall.
- Ist es nicht im geringsten überaschend, dass nur die 5 Minuten angezeigt werden, denn Secondstoshowtime macht nichts anderes als die Anzahl der ganzen Minuten innerhalb der mit dem Parameter seconds in Sekunden gegebenen Zeitspanne zurückzugeben.
Die gesuchte Berechnung läuft eher so:
seconds=320
_minutes=floor(seconds/60)
_seconds-=minutes*60
print(seconds," Sekunden entsprechen ",_minutes," Minuten und ",_seconds," Sekunden.")
Jetzt mach noch Java-Code draus, dann hast du's.
Was genau bewirken die & 60? Also wie kann ich das für z.B. andere Programme interpretieren?