2013-05-22 16 views
7

Una domanda semplice a cui non riesco a trovare risposta. Ho una stringa che è un timestamp, voglio trasformarlo in un oggetto calendario quindi posso visualizzarlo nella mia applicazione Android.Timestamp stringa per Calendar in Java?

Il codice che ho finora mostra tutto rende tutto nel 1970: s.

String timestamp = parameter.fieldParameterStringValue; 
timestampLong = Long.parseLong(timestamp); 
Date d = new Date(timestampLong); 
Calendar c = Calendar.getInstance(); 
c.setTime(d); 
int year = c.get(Calendar.YEAR); 
int month = c.get(Calendar.MONTH); 
int date = c.get(Calendar.DATE); 

dateTextView.setText(year + "-" + month + 1 + "-" + date); 

UPDATE: Cordiali saluti, il timestamp è dal server è: 1.369.148,661 mila, Che potrebbe essere sbagliato?

+0

dove state ottenendo il timestamp da? Alcune API che conosco strisce fuori dagli anni '1000 per risparmiare spazio. vale a dire un secondo di precisione –

+0

Da un server su cui eseguiamo. Il timestamp è corretto, ho triplicato il valore ed è corretto dal server. –

+0

Puoi provare a fare 'c.setTimeInMillis (timestampLong);' per vedere se hai lo stesso risultato? –

risposta

15

Se si ottiene il tempo in secondi, si devono moltiplicare per 1000:

String time = "1369148661"; 
long timestampLong = Long.parseLong(time)*1000; 
Date d = new Date(timestampLong); 
Calendar c = Calendar.getInstance(); 
c.setTime(d); 
int year = c.get(Calendar.YEAR); 
int month = c.get(Calendar.MONTH); 
int date = c.get(Calendar.DATE); 
System.out.println(year +"-"+month+"-"+date); 

uscita:

2013-4 -21

cura perché la costante per la Calendar.MONTH è a partire da 0. Quindi si dovrebbe visualizzare in questo modo per l'utente:

System.out.println(year +"-"+(month+1)+"-"+date); 
+0

Alla fine ho saltato la conversione della data, ma per il resto è lo stesso codice che ho utilizzato. Soprattutto con il (mese +1) che mi ha buttato all'inizio. –

+0

risposta eccellente. Tu salvi la mia giornata e la grande soluzione –

18

È possibile utilizzare setTimeMillis:

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(timestampLong); 
Problemi correlati