Wie man den Unterschied zwischen 2 mal in android
Will ich finden, die Differenz zwischen der aktuellen Systemzeit und Daten eingefügt&time String
. Ich habe dies ausprobiert:
try {
String strFileDate = "2012-04-19 15:15:00";
DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date date = formatter2.parse(strFileDate);
long difference = date.getTime() - System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(difference);
Toast.makeText(getBaseContext(),
formatter2.format(calendar.getTime()), Toast.LENGTH_LONG)
.show();
} catch (Exception e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
aber es gibt mir nicht das richtige Ergebnis. Mache ich es richtig?
Update
Versuchte ich Folgendes ::
String strFileDate = "2012-04-19 15:15:00";
DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date date = formatter2.parse(strFileDate);
long diffInMs = date.getTime()
- new Date(System.currentTimeMillis()).getTime();
long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMs);
long hour = diffInSec / (1000 * 60 * 60);
double minutes = diffInSec / (1000 * 60);
//long diffInHour = TimeUnit.to(diffInMs);
Toast.makeText(getBaseContext(),
"left time is :: " + hour + ":" + minutes,
Toast.LENGTH_LONG).show();
Ausgabe::
Links Zeit:: -2 : -131.0
UPdate(20/4/2012)
try {
Date dt = new Date();
String strFileDate = "2012-04-20 13:10:00";
DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date date = formatter2.parse(strFileDate);
String s = getTimeDiff(dt, date);
Log.i("Date is :: >>> ", s);
} catch (Exception e) {
e.printStackTrace();
}
public String getTimeDiff(Date dateOne, Date dateTwo) {
String diff = "";
long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime());
diff = String.format("%d hour(s) %d min(s)", TimeUnit.MILLISECONDS.toHours(timeDiff),
TimeUnit.MILLISECONDS.toMinutes(timeDiff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeDiff)));
return diff;
}
Ausgabe::
04-20 12:48:06.629:
INFO/Datum :: >>>(1295): 2183 Stunde(N) 38 Minute(s)
- ich will mal différance in Minuten und Stunden..
- Was nicht funktioniert? Was erwarten Sie, um zu sehen, in der Toast? Was erwarten Sie sich von diesem snippet? Calendar Kalender = Calendar.getInstance(); calendar.setTimeInMillis(Differenz); Bitte geben Sie weitere details.
- Kasse diese Frage. stackoverflow.com/questions/635935/...
- ich update mein code bitte überprüfen Sie es
- ersetzen Sie lange diffInMs = Datum.getTime() - new Date(System.currentTimeMillis()).getTime(); mit langen diffInMs = new Date(System.currentTimeMillis()).getTime() - Datum.getTime();
- FYI, ist die lästige alte Datum-Zeit-Klassen wie
java.util.Date
,java.util.Calendar
, undjava.text.SimpleDateFormat
sind jetzt legacy, überlagert von der java.Zeit Klassen gebaut in Java 8 & Java 9. Siehe Tutorial von Oracle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden, JodaTime für die Berechnung der Frist(Zeitdauer). http://joda-time.sourceforge.net/
verwenden TimeUnit, um die Anzahl der Sekunden.
http://developer.android.com/reference/java/util/concurrent/TimeUnit.html
Bearbeitet:
Bekommen TIMEUNIT Code hier
diffInMs
so, jetzt sage mir, wie kann ich konvertieren, die lange in MinutenTimeUnit.toMinutes(diff);
jeder Art von Methodeund für die erste Differenz in Stunden
Sehen #3960661 wenn Sie diese Zeit in Sekunden.
tl;dr
Zeitzone
Ihren code ignoriert das entscheidende Problem der Zeitzone.
Den
java.util.Date
Klasse repräsentiert einen Zeitpunkt in UTC. Inzwischen ist Ihre input-string "2012-04-19 15:15:00" fehlt jegliche Anzeige der Zeitzone oder der offset von UTC. Sie müssen explizit den Wert in den Kontext einer erwarteten/gewünschten zone/offset oder sonst diese älteren Klassen gilt eine zone/offset implizit.java.Zeit
Den modernen Ansatz nutzt die java.Zeit Klassen gebaut in Java 8 und höher.
Ihren input nahezu kompatibel mit der Norm ISO 8601 zu formatieren. Schalter, der PLATZ in der Mitte für eine
T
.Analysieren als
LocalDateTime
Objekt, als Ihre Eingabe fehlt oder eine zone offset.Gelten die zone oder das offset, dass Sie für bestimmte wissen, war bestimmt für diesen input.
...oder...
Wenn Sie möchten, dass das delta zwischen den beiden Momenten als Zeitspanne nicht mit der Zeitachse skaliert als Stunden-Minuten-Sekunden, berechnen
Dauer
.Ähnlich, aber skaliert in Jahren-Monaten-Tagen
Zeit
. AuszugLocalDate
nur-Datum-Objekte zu ernähren, den die factory-Methode derPeriod
.Insgesamt verstrichene
Wenn Sie möchten, dass eine einzelne Zahl von insgesamt verstrichene Minuten, Sekunden, etc., verwenden
ChronoUnit::between
Methode auf dieChronoUnit
enum.Erzeugung von strings
Erzeugen Sie einen string in standard ISO-8601-format. Rufen Sie einfach
Duration::toString
oderPeriod::toString
.Format ist
PnYnMnDTnHnMnS
woP
den Anfang markiert, undT
trennt alle Jahre-Monate-Tage von jedem Stunden-Minuten-Sekunden.Können Sie befragen für die Teile, die durch den Aufruf verschiedene getter-Methoden.
Tipp: Wenn Sie die Arbeit mit solchen Zeitspannen viel überhaupt, fügen Sie die ThreeTen-Extra Bibliothek zu Ihrem Projekt zu verwenden, die
Interval
undLocalDateRange
Klassen.Über java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die lästige alte legacy Datum-Zeit-Klassen wie
java.util.Date
,Calendar
, &" = SimpleDateFormat
.Den Joda-Time Projekt, jetzt in Wartung-Modus, rät der migration auf die java.Zeit Klassen.
Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen. Spezifikation JSR 310.
Können Sie exchange java.Zeit Objekte direkt mit Ihrer Datenbank. Verwenden Sie eine JDBC-Treiber kompatibel mit JDBC 4.2 oder später. Keine Notwendigkeit für Streicher, keine Notwendigkeit für
java.sql.*
Klassen.Wo erhalten Sie die java.Zeit-Klassen?
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
,YearWeek
,YearQuarter
, und mehr.