Wenn Sie die Start- und Endzeiten getrennt speichern müssen, gibt es nur zwei Möglichkeiten (ich kann es mir vorstellen), um die Werte kleiner zu machen.
Erstens, System.currentTimeMillis()
gilt ab 1. Januar 1970 UTC. Aber wenn Ihre Uhr nie vor "jetzt" läuft, können Sie eine bestimmte Zeit abziehen. Ich wählte 1497580000000, da es definitiv in der Vergangenheit war, als ich dies schrieb und es eine schöne gerade Zahl ist.
Zweitens, teilen Sie den Wert durch eine beliebige Genauigkeit, die Sie verlieren möchten. In Ihrem Fall möchten Sie vielleicht nicht einmal, aber hier wählte ich 100.
Die zurückgegebenen Zahlen sehen jetzt klein aus, aber sie werden weiter größer, da der Unterschied zwischen der aktuellen Zeit und 1497580000000 deutlicher wird.
Die bevorzugte Lösung ist, nichts davon zu tun, aber speichern Sie einfach den langen Wert, wenn Sie können.
Sie werden nie eine große genaue Zahl in nur 3 Dezimalziffern verzaubern. Nicht ohne Quantenmechanik.
{
long start = 1497584001010L;
long end = 1497584008000L;
System.out.println("Diff: " + (end - start));
int compactStart = compact(start);
int compactEnd = compact(end);
System.out.println("Compact Start: " + compactStart);
System.out.println("Compact End: " + compactEnd);
System.out.println("Diff: " + (expand(compactEnd) - expand(compactStart)));
}
private int compact(long millis) {
return (int)((millis - 1497580000000L)/100);
}
private long expand(int millis) {
return (millis + 1497584000000L)*100;
}
Ergebnis ...
Diff: 6990
Compact Start: 40010
Compact End: 40080
Diff: 7000
Note 7000 hat gleich 6990 nicht wegen der absichtlichen Genauigkeitsverlust.
** Warum ** sind Sie besorgt über die Anzahl der Ziffern ** und ** nein, betrachten Sie jede Zeit + - 500ms. –
'System.currentTimeMillis()' gibt die Anzahl der Millisekunden seit der Unix-Epoche zurück - Der Unterschied zwischen 'start' und 'end' ist die Anzahl der Millisekunden, die zwischen diesen beiden Punkten verstrichen sind. Sie sollten anfangen, indem Sie "Ende" von "Start" subtrahieren, dann können Sie den Wert als Sekunden formatieren, wenn Sie von dort wollen (obwohl Sie wahrscheinlich mit "0" enden) – MadProgrammer
Sie meinen wie '% 1000'? –