No Such Tipo di dati
Non esiste una cosa come "JSON timestamp". JSON ha very few defined data types. Nessun tipo di data-ora tra di loro.
Come il correct Answer da stati Wombat spaventosi, il numero è apparentemente un conteggio di interi secondi dall'epoca Unix del 1970. La classe java.util.Date traccia tempo come millisecondi dal momento che il Unix epoch, piuttosto che interi secondi. Quindi devi moltiplicare per 1.000. È inoltre necessario gestire gli interi long
(64 bit) anziché int
(32 bit). Aggiungere un maiuscolo L
ai valori letterali numerici e dichiarare qualsiasi variabile come long
.
Le classi java.util.Date/.Calendar sono notoriamente problematiche. Ora sono soppiantati dallo java.time package incorporato in Java 8 e versioni successive e/o nella libreria Joda-Time di terze parti.
Varie librerie di elaborazione JSON supportano i convertitori per la creazione di oggetti java.time o Joda-Time. Oppure puoi eseguire una conversione nel tuo codice, mostrato di seguito.
Tenere presente che sia java.time che Joda-Time supportano l'assegnazione di un fuso orario. Il codice seguente assegna UTC a scopo dimostrativo, ma è possibile assegnare la zona desiderata/prevista.
Joda Time
Ecco il codice in Joda-Time 2.8.1 che mostra l'utilizzo del numero di ingresso sia come secondi o millisecondi.
long secondsSinceEpoch = 1419038000L;
DateTime dateTimeSeconds = new DateTime(secondsSinceEpoch , DateTimeZone.UTC);
DateTime dateTimeMillis = new DateTime(secondsSinceEpoch * 1000L , DateTimeZone.UTC); // Note the crucial "L" appended to the numeric literal.
Discarica per consolle.
System.out.println("dateTimeSeconds: " + dateTimeSeconds);
System.out.println("dateTimeMillis: " + dateTimeMillis);
Quando eseguito.
dateTimeSeconds: 1970-01-17T10:10:38.000Z
dateTimeMillis: 2014-12-20T01:13:20.000Z
java.time
codice simile al precedente, ma utilizzando java.time di Java 8.
Instant instant = Instant.ofEpochSecond(1419038000L);
ZonedDateTime zdtUtc = ZonedDateTime.ofInstant(instant , ZoneOffset.UTC);
ZonedDateTime zdtMontréal = zdtUtc.withZoneSameInstant(ZoneId.of("America/Montreal"));
Dump alla console.
System.out.println("zdtUtc: " + zdtUtc);
System.out.println("zdtMontréal: " + zdtMontréal);
Quando eseguito.
zdtUtc: 2014-12-20T01:13:20Z
zdtMontréal: 2014-12-19T20:13:20-05:00[America/Montreal]
Come stai analizzando il Json? Guarda gson o jackson – beresfordt
@pavankumarparasa Si prega di evitare di postare informazioni e dati estranei. Riduci al minimo lo scenario al minimo necessario per dimostrare il tuo problema. Vedi [Come creare un esempio minimo, completo e verificabile] (http://stackoverflow.com/help/mcve). –