Ich vor ner geraumen Zeit schon einmal nen Thema dazu aufgemacht, das eigentlich auch gelöst war. Nur war mein Problem das die Methode nur eine zweistellige Stundenzahl anzeigen konnte. Jetzt wollte ich das mal angehen und hab das so abgeändert:
public static void main(String[] args) {
System.out.println(new ZeitTest().formatTime(System.currentTimeMillis()));
}
public String formatTime(long milliseconds) {
SimpleDateFormat sdf = null;
String dauer = "mm:ss";
long stunden = TimeUnit.MILLISECONDS.toHours(milliseconds);
long minuten = TimeUnit.MILLISECONDS.toMinutes(milliseconds);
long sekunden = TimeUnit.MILLISECONDS.toSeconds(milliseconds);
System.out.println(stunden);
System.out.println(minuten);
System.out.println(sekunden);
System.out.println(getLength(stunden));
if (stunden > 0) {
dauer = "H:" + dauer;
}
StringBuilder sb = new StringBuilder(dauer);
long length = getLength(stunden);
for (int i = 1; i < length; i++) {
sb.insert(0, "H");
}
dauer = sb.toString();
System.out.println(dauer);
sdf = new SimpleDateFormat(dauer);
sdf.setTimeZone(TimeZone.getTimeZone("EN"));
Date date = new Date(milliseconds);
return sdf.format(date);
}
public long getLength(long i) {
return (long) Math.log10(i) + 1;
}
}```
Ausgabe:
> 383244
> 22994649
> 1379678944
> 6
> HHHHHH:mm:ss
> 000012:09:04
Warum formatiert er zwar richtig die Stunden, aber gibt nur ne Zweistellige Stundenzahl an, die nach der erste Ausgabe sogar falsch ist...
die Millisekunden geben einen Zeitstempel an, heute, 14:09:04 in Deutschland, 12:09:04 in England,
bei Sommerzeit sind zwei Stunden Abstand, im Winter nur eine,
die Gesamtzahl der Stunden kann man offensichtlich ausrechnen,
aber SimpleDateFormat hat damit weder an sich etwas am Hut,
noch kann man es dahin hinbiegen, egal wieviele Hs du aneinanderreihst