Uhrzeit Format?

Hallo

Ich möchte eine Stopuhr machen, es soll bei “00:00:00” beginnen gibts in Java schon eine hilfreiche Klasse die mir dieses Format hergibt und ich die Sekunden einfach inkrementieren kann?

Oder muss ich dafür eine eigene Klasse schreiben?

Bis jetzt sehe ich nur ms

		long ms = 	System.currentTimeMillis();
			while (running) {
			
				uhrzeit.setText((System.currentTimeMillis()-ms) + "");
			}
			
			uhrzeit.setText("00:00:00");
		}

Da gibt’s 1000 verschiedene Möglichkeiten. Mit https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html kann man einige Konvertierungen machen. Eine Möglichkeit:

import java.util.concurrent.TimeUnit;

class DateTest
{
    public static void main(String args[])
    {
        long ms = 250 + 12 * 1000 + 34 * 60 * 1000 + 5 * 60 * 60 * 1000;
        System.out.println(createString(ms));
    }

    private static String createString(long ms)
    {
        long t = ms;
        long h = TimeUnit.MILLISECONDS.toHours(t);
        t -= TimeUnit.HOURS.toMillis(h);
        long m = TimeUnit.MILLISECONDS.toMinutes(t);
        t -= TimeUnit.MINUTES.toMillis(m);
        long s = TimeUnit.MILLISECONDS.toSeconds(t);
        String string = String.format("%02d:%02d:%02d", h, m, s);
        return string;
    }
}

In Java 8 gibt es eine Klasse, die mit Zeiten (ohne Tage und Zeitzonen) umgehen kann: LocalTime. Diese hat z.B. eine plusSeconds-Methode (allerdings ist die Klasse immutable, du bekommst also von der Methode eine neue Instanz zurück). Du wirst die Ausgabe wohl formatieren müssen, toString gibt z.B. keine Sekunden aus, wenn diese 0 sind.

Alles klar danke hat funktioniert

Mhm, hatte ich woanders schon mal gepostet, wegen der “Darstellung” kannst du das so machen:

        name = name.replace('-', '_');
        name = name.replace(':', '_');```

Nun, `%03d` sind hier die Millisekunden und `ctm` sind die üblichen Millisekunden seit 1.1.'70.

Ansonsten würde ich https://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax , SimpleDateFormat, GregorianCalendar, Date und https://docs.oracle.com/javase/tutorial/i18n/format/dateintro.html kennen und verwenden.

Hilft dir das jetzt weiter,- oder verwirrt das alles nur?

Bei einer Stoppuhr benötigst du wahrscheinlich Threads (mehrere "Anwendungs"ablauffaden), welche die UI/GUI aktualisieren.