/**
* @param args the command line arguments
* @throws java.lang.InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
GregorianCalendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.add(Calendar.DAY_OF_MONTH, 1);
JLabel[] jla = new JLabel[]{
new JLabel("Millisekunden:"), new JLabel("Sekunden:"), new JLabel("Minuten:"), new JLabel("Stunden:"),
new JLabel("", JLabel.CENTER), new JLabel("", JLabel.CENTER), new JLabel("", JLabel.CENTER), new JLabel("", JLabel.CENTER)
};
JFrame jf = new JFrame("...");
jf.setLayout(new GridLayout(2, 4));
for (JLabel jl : jla) {
jf.add(jl);
}
jf.setSize(600, 200);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jf.setVisible(true);
for (;;) {
SwingUtilities.invokeLater(() -> {
jla[4].setText(cal.getTimeInMillis() - System.currentTimeMillis() + "");
jla[5].setText((cal.getTimeInMillis() - System.currentTimeMillis()) / 1000 + "");
jla[6].setText((cal.getTimeInMillis() - System.currentTimeMillis()) / 60000 + "");
jla[7].setText((cal.getTimeInMillis() - System.currentTimeMillis()) / 3600000 + "");
});
Thread.sleep(100);
}
}
Ich hätte es noch ganz -altbacken- gemacht:
Java:...
Oder einfach selber Mitternacht ausrechnen. Such einfach mal nach Countdown im Internet.
(Die Ausgabe ist nicht besonders schön, sondern war nur für mich kontrolle.)
cal
ist nicht genau Mitternacht Passt nur nicht,cal
ist nicht genau Mitternacht
cal
ist auf die Lokalität des Benutzers bezogen, also umgebungsabhängig. Ansonsten wäre es ja 1 Uhr.Bei mir ist cal einige Sekunden nach Mitternacht...Doch,cal
ist auf die Lokalität des Benutzers bezogen, also umgebungsabhängig. Ansonsten wäre es ja 1 Uhr.
Ist doch viel besser lesbar und verständlicher als das was du vorgestellt hast.LocalDateTime.of(LocalDate.now(),LocalTime.MIDNIGHT).plusDays(1)
Wie aktuell war denn Java 8 zum Zeitpunkt der Antworten? Sollen wir Spoilern oder sollen wir dir lieber nicht die Überraschung versauen?Hier wurde sich auch schon reichlich und trefflich gestritten:
http://stackoverflow.com/questions/...bject-of-midnight-today-and-midnight-tomorrow
Wie du sehen tust: Nix veraltet/obsolet.
Geht aber auch gut ohne streams mit #removeIf und #forEachMan filtert doch auch keine Listen mehr mit endlosen for und while Schleifen, sondern benutzt Streams.
Aber wieso soll man Java 1.1 Code benutzen, wenn es die bessere schönere Varianten in der Standard Java API gibt.
Für die meisten heißt am Besten möglichst einfacher, lesbarer Code mit möglichst großer Testabdeckung. Und das ist hierbei für die meisten Java8-DateAPI = JodaTime > GregorianCalendar >>>> selber gerechnet.Das selber berechnen, fände ich eigentlich noch am besten, wenn's nur um De oder UTC/GMT/Zulu geht. Aber was heißt schon am besten? : D
Du vergisst, das er direkt nach "deiner" Lösung eine andere Lösung empfiehlt, es zum Zeitpunkt der Antwort noch keine Java8 gab, der Thread überhaupt erst mit der Frage nach einer besseren Lösung als "deiner" beginnt und deine Lösung im Gegensatz zu der bei StackOverFlow nicht korrekt istIhr vergesst immer noch, dass meine Lösung auch die erste bei StackOverflow ist. Ohne, dass ich copying and pasting betrieben hätte. Wenn schon bashing, dann bashe ich auch mal.
Selber rechnen hätte bei 1 Mrd. Countdowns auch Geschwindigkeitsvorteile....