Ich habe einen langen Zeitstempel 1499070300 (entspricht Mo, 03. Juli 2017 16:25:00 +0800), aber wenn ich ihn in LocalDateTime umwandle, erhalte ich 1970-01-18T16:24:30.300
Hier ist mein Code
long test_timestamp = 1499070300;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone
.getDefault().toZoneId());
langer test_timestamp = 1499070300l;??
– Akshay
3. Juli 2017 um 10:40 Uhr
Verwenden ZoneId.systemDefault() Anstatt von TimeZone.getDefault().toZoneId()
– Joda Stephen
3. Juli 2017 um 10:44 Uhr
Sie sind nicht der Erste, der einen nach einem solchen Fehler fragt. Beispiel: SimpleDateFormat gibt immer 1970.01.17 mit falscher Zeitzone zurück.
– Ole VV
3. Juli 2017 um 11:14 Uhr
Ähnlich: Konvertieren eines 19-stelligen Unix-Zeitstempels in ein lesbares Datum
– Basilikum Bourque
23. Mai 2019 um 15:50 Uhr
Juan
Sie müssen den Zeitstempel in Millisekunden übergeben:
long test_timestamp = 1499070300000L;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp),
TimeZone.getDefault().toZoneId());
System.out.println(triggerTime);
Ergebnis:
2017-07-03T10:25
Oder verwenden ofEpochSecond stattdessen:
long test_timestamp = 1499070300L;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochSecond(test_timestamp),
TimeZone.getDefault().toZoneId());
System.out.println(triggerTime);
Ergebnis:
2017-07-03T10:25
Vielen Dank. das habe ich vermisst
– zufällig
3. Juli 2017 um 10:54 Uhr
Übrigens, wenn Sie AndroidThreeTen verwenden, ersetzen Sie TimeZone.getDefault().toZoneId() mit DateTimeUtils.toZoneId(TimeZone.getDefault()).
– Louis Tsai
20. März 2018 um 9:29 Uhr
Versuche es mal mit folgendem..
long test_timestamp = 1499070300000L;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone
.getDefault().toZoneId());
Standardmäßig 1499070300000 ist int, wenn es am Ende kein l enthält. Übergeben Sie auch die Zeit in Millisekunden.
Wenn Sie den Back-Port von Android Threeten verwenden, ist die gewünschte Zeile diese
long test_timestamp = 1499070300L;
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp ), TimeZone
.getDefault().toZoneId());
Ihr Problem ist, dass der Zeitstempel nicht in Millisekunden, sondern in Sekunden ab dem Epochendatum ausgedrückt wird. Multiplizieren Sie entweder Ihren Zeitstempel mit 1000 oder verwenden Sie die Instant.ofEpochSecond().
Nasib
EINFACHE und geradlinige Lösung wird (KOTLIN)
val timeStamp:Long=559585985988
val sdf = SimpleDateFormat("hh:mm:ss a - MMM dd,yyyy", Locale.getDefault())
val tz = TimeZone.getDefault()
val now = Date()
val offsetFromUtc = tz.getOffset(now.time)
val localeTimeStr = sdf.format(timeStamp + offsetFromUtc) //add the offset to get the local time from the epoch timestamp
12450300cookie-checklanger Zeitstempel zu LocalDateTimeyes
langer test_timestamp = 1499070300l;??
– Akshay
3. Juli 2017 um 10:40 Uhr
Verwenden
ZoneId.systemDefault()
Anstatt vonTimeZone.getDefault().toZoneId()
– Joda Stephen
3. Juli 2017 um 10:44 Uhr
Sie sind nicht der Erste, der einen nach einem solchen Fehler fragt. Beispiel: SimpleDateFormat gibt immer 1970.01.17 mit falscher Zeitzone zurück.
– Ole VV
3. Juli 2017 um 11:14 Uhr
Ähnlich: Konvertieren eines 19-stelligen Unix-Zeitstempels in ein lesbares Datum
– Basilikum Bourque
23. Mai 2019 um 15:50 Uhr