2016-05-05 3 views
1

also benutze ich nodejs, um ein json-Objekt zurückzusenden, bei der Rückkehr bekomme ich den folgenden Wert für das Datum "2016-05-02T04:00:00.000Z" Was ich tun muss, ist dies in der sqlite db als lange auf meiner Android-App zu speichern - (Zeitzone spielt keine Rolle, die einzigen Dinge, die mir wichtig sind, sind Jahr, Monat und Tag.Wie analysiere ich eine Zeitzone in eine lange in SQLite speichern?

Jetzt bekomme ich eine Liste von 50 Objekten mit diesem Datumsformat - also muss es etwas effizient sein.

Ich habe gelesen, dass Zeitzonen nicht analysierbar sind, aber dann haben Leute gesagt, dass es im neuen Java ist, also lass mich bitte wissen, wie ich es richtig analysieren kann.

Soll SimpleDateFormat funktionieren?

+0

Java 8 hat die 'java.time *' Klassen, die Sie mit Zeitzonen und so helfen arbeiten, aber Android hat nicht diese Klassen nach [diese] (http://developer.android.com/preview/j8-jack.html) trotz einiger der Sprachfunktionen. –

Antwort

1

können Sie Calendar Klasse wie folgt verwenden:

Calendar c = Calendar.getInstance(); 
c.set(Calendar.YEAR, year); 
c.set(Calendar.MONTH, month); 
c.set(Calendar.DAY_OF_MONTH, day); 

aber vorher müssen Sie manuell Ihre String analysieren. Split durch den Buchstaben "T", dann Array [0] und geteilt durch "-", dann Integer.parseInt (..) um Tag, Monat und Jahr zu erhalten. Für den Zeitstempel können Sie c,getTimeInMillis();

verwenden
+0

Danke das hat geklappt! – Lion789

0

Verwenden Sie einfach die Zeit in Millisekunden.

In Android für die aktuelle Zeit können Sie System.currentTimeMillis verwenden und aus diesem können Sie Jahr, Monat und Tag leicht ausmachen.

+0

beziehen Sie sich für das Umwandeln von Millis zu Datumsformat http://stackoverflow.com/questions/7953725/how-to-convert-milliseconds-to-date-format-in-android – Ashish

+0

Gut der Server hat das Datum gespeichert, also ich brauche um dieses Datum zu nehmen und es zu einem langen zu machen - ich erstelle kein neues Datum. – Lion789

+0

Benutze Gauthier Antwort er hat es bereits erklärt. – Ashish

0

Ja, SimpleDateFormat funktioniert.

Was Sie tun müssen, ist Ihre String-Zeitmarke in ein Date-Objekt zu analysieren, von dem Sie das Millisekunden-Differential seit dem 1. Januar 1970, Mitternacht GMT abrufen konnten.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
Date d = sdf.parse(timestamp); 

und dann rufen Sie die getTime (Methode) 1 die für Differenz zwischen Zeitstempel und Januar zu erhalten, 1970, Mitternacht GMT.

d.getTime(); 

doc. http://developer.android.com/reference/java/text/SimpleDateFormat.html und http://developer.android.com/reference/java/util/Date.html#getTime()

+0

Hat nicht funktioniert, es gab mir eine Ausnahme – Lion789

+0

Können Sie die Ausnahme anzeigen? – Gauthier

Verwandte Themen