2013-05-22 9 views
7

Eine einfache Frage, die ich nicht eine Antwort finden kann. Ich habe einen String, der einen Zeitstempel ist, möchte ich es in ein Kalenderobjekt machen, damit ich dann in meinem Android-Anwendung angezeigt werden kann.String Zeitstempel in Java für den Kalender?

Der Code den ich bisher habe zeigt alles in den 1970er Jahren: 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: Gerade FYI, der Zeitstempel vom Server ist: 1369148661, das könnte falsch sein?

+0

wo Sie den Zeitstempel von zu bekommen? Einige API Ich kenne Streifen aus den 1000ern, um Platz zu sparen. d.h. eine Sekunde Genauigkeit –

+0

Von einem Server, den wir ausführen. Der Zeitstempel ist korrekt, ich habe den Wert dreifach überprüft und der Wert ist vom Server korrekt. –

+0

Können Sie versuchen, 'c.setTimeInMillis (timestampLong);' zu verwenden, um zu sehen, ob Sie das gleiche Ergebnis haben? –

Antwort

15

Wenn Sie die Zeit in Sekunden zu erhalten, müssen Sie es mit 1000 multiplizieren:

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); 

Ausgang:

2013-4 -21

Pflege, weil die Konstante für die Calendar.MONTH wird ausgehend von 0. So sollten Sie es so für den Benutzer angezeigt werden:

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

Ich übersprang die Datumsumwandlung, aber ansonsten ist es derselbe Code, den ich am Ende benutzt habe. Besonders mit dem (Monat +1), der mich am Anfang warf. –

+0

ausgezeichnete Antwort. Du sparst meinen Tag und großartige Lösung –

18

Sie verwenden setTimeMillis:

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(timestampLong); 
Verwandte Themen