2016-10-27 8 views
-3

Ich habe folgendes Datum String:Datumsformat für Zeitstempel?

1477547160000 + 0800

Gibt es ein Datumsformat für Zeitstempel?

AFAIK gibt es kein Datumsformat Zeitstempel wie in here

+0

Die Zahl auf der linken Seite sind Millisekunden der Epoche (wie in 'System.currentTimeMillis()'). Die Nummer auf der rechten Seite zeigt die Zeitzone an. – SJuan76

+0

Wie ist die Zeichenfolge formatiert? Sind diese Millisekunden seit 1970? Wie ist die Zeitzone zu interpretieren? – Henry

+0

Ich bekomme es von der Antwort, so will ich wissen, ob es irgendwie "yyyy mm dd" gibt, um diese Zeichenfolge zu analysieren .. AFAIK, gibt es nicht, aber runter LOL – Rendy

Antwort

0

Unter der Annahme, dass die Zahl vor + ist Epoche Millisekunden zu analysieren, und die Zahl nach + sind die Zeitzonen, können Sie dies versuchen:

String input = "1477547160000+0800"; 
long epoch = Long.parseLong(input.substring(0, input.length() - 5)); 
int offset = Integer.parseInt(input.substring(input.length() - 5)); 
int offsetHour = offset/100; 
int offsetMin = offset % 100; 

OffsetDateTime t = Instant 
    .ofEpochMilli(epoch) 
    .atOffset(ZoneOffset.ofHoursMinutes(offsetHour, offsetMin)); 

Jetzt haben Sie OffsetDateTime Instanz, und Sie können es in String eines beliebigen Formats konvertieren. Der Standardwert ist:

t.toString() => "2016-10-27T13:46+08:00" 

Wenn Sie bestimmte Format möchten, können Sie DateTimeFormatter verwenden.

t.format(new DateTimeFormatter(your_format_here));