2011-05-07 3 views
2

Je suis en train d'analyser un fichier XML avec SAXParser et dans le gestionnaire je crée des objets avec l'un des datamembers étant la date. La date de mon fichier XML est au format suivant: 2010-12-28.Date d'analyse et de stockage dans la base de données SQLite

Je ne trouve pas comment transformer une chaîne comme ça en un objet Date. Et je ne comprends pas non plus comment le stocker dans une base de données SQLite, car il semble y avoir beaucoup de formats (ceux avec heure/minutes/etc.)

Et j'en ai besoin stocké dans un objet afin que je puisse calculer des timespans etc.

Quelqu'un peut-il m'aider avec ceci?

Répondre

9

Vous pouvez utiliser Format de date Simple Java pour formater votre date dans un objet Date que vous pouvez utiliser pour faire des calculs et ces:

http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

La chaîne d'analyse que vous voulez est "yyyy'-'MM'-'dd"

Comme pour le stocker dans la base de données SQLite, vous avez quelques options:

  • Mémoriser sous forme de chaîne et le convertir en objet date lorsqu'il est sorti
  • (Préféré) Enregistrez-le sous la forme d'un horodatage unix (Date.getTime() vous donne le nombre de millisecondes depuis 1970 et vous pouvez stocker cette valeur dans la base de données. Cette méthode est préférée car vous n'avez pas à faire autant de conversions (relativement chères). Vous pouvez effectuer des opérations simples sur les valeurs d'horodatage long.

Il y a deux autres options à l'aide de SQLite intégrée dans les fonctions de date (comme décrit here), mais en fin de compte si vous voulez tirer dans le code Android/Java et de le manipuler comme un objet Date que vous allez ot faire une conversion.

+0

Quel type de données dois-je utiliser pour l'horodatage dans SQLite, simplement 'text'? – networkprofile

+2

@Sled si vous allez avec la première option, vous utiliserez 'text'. Cependant, l'option préférée serait d'utiliser l'horodatage unix, auquel cas vous utiliseriez 'integer' (qui peut contenir des valeurs' long' Java) – debracey

+0

Très bien, merci, je suis allé avec l'option préférée et utilisé entier. Une dernière question: y a-t-il des classes qui aident à calculer les dates, etc.? Je veux faire des choses comme voir si la date est déjà passée etc .. – networkprofile

Questions connexes