2011-12-27 4 views
2

Dans Android, la date de chaque événement (tels que les anniversaires et les anniversaires) est enregistrée au format String, par ex. "2011-12-24".Convertir la date d'Android Chaînes en objets de date

C'est au moins le cas pour mon téléphone. Certains autres téléphones peuvent peut-être stocker ces dates dans d'autres formats s'ils ont un calendrier différent du calendrier grégorien.

Même pour les téléphones avec l'ensemble de calendrier grégorien, il existe des chaînes de date avec heures et minutes et sans. Je reçois une date chaîne quand j'interroger les contacts table pour un événement:

cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Event.ST‌​ART_DATE)) 

Il en résulte (par exemple):

"2011-12-14" ou « 2011-12-24T00: 00: 00Z "

Vous pouvez voir qu'il y a beaucoup de différents formats possibles. Afin de calculer avec des dates, j'ai besoin de les convertir à partir d'objets String à Date, pas besoin de moi?

Comment est-ce que je peux faire ceci?

PS: Je sais qu'il ya une fonction d'analyse syntaxique pour les objets de date java:

DateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy"); 
Date tempDate = myDateFormat.parse("24/12/2011"); 

Mais dans Android, je ne sais pas quel format je serai confronté à, dois-je?

Répondre

3

Android fonctionne avec les objets de date. Chaque fois que vous devez analyser une date à partir d'une chaîne, c'est parce que cette date a été sérialisée, probablement dans un fichier. Dans ce cas, vous connaissez le format utilisé. L'objet date est utilisé dans les préférences, l'objet date est utilisé presque partout où je peux penser aux services partagés, aux activités, etc. Cela signifie qu'il n'est presque jamais nécessaire d'analyser la chaîne à partir de la date sauf si source sérialisée, en lisant à partir d'un service Web, etc. Si vous pouvez nous dire votre scénario, vous pourriez obtenir une réponse plus spécifique.

Vous pouvez obtenir le format de date actuellement définie comme ceci:

DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); 
+0

Merci pour la réponse gentil et serviable! J'interroge la table des contacts pour un événement: cursor.getString (cursor.getColumnIndex (ContactsContract.CommonDataKinds.Event.START_DATE)) – caw

+0

... et c'est là que je reçois une date sous forme de chaîne, par ex. "2011-12-24T00: 00: 00Z". Comment puis-je obtenir la date en tant qu'objet Date? Il n'y a pas de méthode "cursor.getDate()" ... – caw

+0

Vous pouvez l'analyser dans ce cas. En outre, ce format de date sera le même quel que soit le jeu de langue, vous pouvez donc le supposer sans risque. –

0
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

SimpleDateFormat myDateFormat = new SimpleDateFormat("dd/MM/yy"); 
     Date tempDate; 
     try { 
      tempDate = myDateFormat.parse("24/12/2011"); 
       long milliseconds=tempDate.getTime(); 
       Toast.makeText(getApplicationContext(), milliseconds+"", 1).show(); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }