IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

timestamp.gettime() & string date


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut timestamp.gettime() & string date
    Hello!

    Mon problème:
    -> passer de "Mardi 16 Octobre 2012" à 1350382221552
    -> et vice versa

    Dans un sens ça tourne bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static String timeStamp2date (long ts)
    {
    java.text.SimpleDateFormat formatter = new SimpleDateFormat("EEEE dd MMMM yyyy");
    return formatter.format(ts); 
    }
    -> mon 1350382221552 ressort bien en "Mardi 16 Octobre 2012"

    De l'autre coté je râme!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public static long date2timeStamp2(String date)
    	{
    		SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE dd MMMM yyyy");
    		java.util.Date parsedDate;
    		java.sql.Timestamp tS=null;
    		try 
    		{
    			parsedDate = dateFormat.parse(date);
    			tS = new java.sql.Timestamp(parsedDate.getTime());
    		} 
    		catch (ParseException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		//return tS.getTime()/1000;
    		return tS.getTime();
    	}
    -> mon "Mardi 16 Octobre 2012" ressort en 1350338400000 au lieu du 1350382221552 initial

    Où me suis-je gourré?

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Essaie simplement ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static long date2timeStamp2(String date)
    	{
    		SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE dd MMMM yyyy");
                    try{
    		      return dateFormat.parse(date).getTime();
                    } catch (ParseException e) {
                    //catch de l'erreur
                    }
                    return 0l;
    	}

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Conseil de vieux programmeur tout moisi qui s'est planté 238984 fois....

    Quand tu as une date, garde une date !
    C'est à dire, ne jamais avoir en paramètre (ou en retour) un "long" qui est en fait un "java.util.Date", mais bien un "java.util.Date"...

    Quand il faut passer par un string (appel web ou autre), utiliser un format "connu" et fixe (genre W3C: "YYYY/MM/DD'T'HH:mm:ss.SSS'Z'" en UTC)

    Quand il faut l'afficher à l'utilisateur, utiliser les fonctions systèmes.



    1350382221552 n'est pas tout à fait "Mardi 16 Octobre 2012", mais "Mardi 16 Octobre 2012 à 12h10 et 21s" (et 552 millisecondes)
    1350338400000 c'est "Mardi 16 Octobre 2012 à 0:0:0.0000"

    Donc tout est logique....

    {edit} Le "timestamp" unix, c'est la même chose sans les millisecondes.... plus aucun intérêt donc (remonte à la grande époque des 16/32 bits)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Oui, tout à fait d'accord avec toi, sur le principe.

    Sauf que là 2 choses:
    -> Sqlite ne gère visiblement pas de format date "natif"
    -> et qu'on m'a donc demandé de gérer ça moi-même avec des timestamps... ce qui à mes yeux n'a pas d'intérêt du tout, surtout que j'avais déjà tout fait avec des string et que ce n'est que pour gérer un cache de liste d'affichage, cache à durée limitée donc!

    Durée de vie limité, qq pouièmes d'octets en plus d'utilisés sur la sd card certes, est ce vraiment dramatique??

    Mais ce que boss veut...............................

    Bref, étant donné que ma liste d'affichage n'indique que le jour, et pas l'heure, ça devrait coller quand même...

    Merci pour vos réponses en tout cas!

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Haaa non mais sqlite faut stocker un long oui c'est sur... L'interêt majeur étant de filtrer facile (betwen 2 dates), et d'orderer facile (vive les anglicismes)

    Timestamp par contre ... java.sql.Timestamp (et java.sql.Date) sont des extensions de java.util.Date sensées gérer automatiquement les transformation en string lors de l'insertion directe en base de donnée.... Donc dans tous les cas, le retour est un java.util.Date.... et on n'utilse ces classes que pour leurs fonction #toString() et #parse()

    Perso j'ai fait un 'wrapper' autour de SQLite qui me permet de récupérer des java.util.Date d'un cursor, mais surtout, de les insérer et à chaque fois c'est en passant par des "long".

    Mais encore une fois, la transformation vers/depuis un long ne se fait qu'au dernier moment parcequ'on a pas le choix.
    Comme pour l'affichage, c'est juste quand on le met à l'écran qu'on fait la traduction en String.
    Dans tout le code c'est un java.util.Date, afin de bien profiter de notre langage fortement typé adoré.
    Sinon, c'est la galère pour gérer les changements d'heure (été/hiver/timezone), et même de format d'affichage (même pour un langage, sur android, on peut choisir d'afficher les dates différemment).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Merkiiiiiiiii!

  7. #7
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Merci de bien pensez à tagger votre sujet en résolu via le bouton en bas de la page si vous avez la réponse à votre question .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Oooooops!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] un champ Timestamp ou deux champs Date et Heure?
    Par davmaster62 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 25/02/2006, 23h04
  2. Problème String/Date
    Par plasticgoat dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 20/12/2005, 10h56
  3. Remplir un timestamp avec un string ?
    Par nadass dans le forum Langage
    Réponses: 4
    Dernier message: 16/11/2005, 23h54
  4. [JDBC] String => Date Oracle
    Par mr.t dans le forum JDBC
    Réponses: 22
    Dernier message: 16/02/2005, 18h51
  5. [date en string] -> [date en s]
    Par meufeu dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 05/07/2004, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo