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

Collection et Stream Java Discussion :

bigdecimal et date


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Par défaut bigdecimal et date
    Bonjour,

    Je voudrais afficher le mois et l'année d'une date sous cette forme: 01/08. Le champs "datdeb" dans la base est de type BigDecimal. Je l'ai formaté et j'ai obtenu ça: 01/70 ! même si je change l'année, elle est toujours à 70!

    Any explication?
    Merci

  2. #2
    Membre expérimenté Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut Davantage de précisions ?
    Salut,
    Il serait bien que tu nous expliques ce que stocke le champ datdeb de ta base, pourquoi il est mappé sur un BigDecimal et par quelle méthode tu l'as formatté...
    Sinon à brûle pourpoint, vu ton résultat je subodore un problème de formattage du à une mauvaise utilisation de Date.getTime qui comme le dit la javadoc:
    Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Par défaut
    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BigDecimal bd1 = new BigDecimal(tt.get(0).getDebExe().toString()); 
    Date date = new Date(bd1.longValue());
    String strs=ref.datetostring1(date);
    societeForm.setDatdeb(strs);
    PS: je travaille sur une base existante: la date est de type BigDecimal!
    (dans la base)datdeb=108, je voudrais l'afficher 01/08 (le même programme a été fait avec PowerBuilder et ça fonctionnait bien!)

    Merci

  4. #4
    Membre expérimenté Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut La doc est ton amie

    Le constructeur de Date prenant un long en parametre (celui que tu utilises), ajoute ce nombre de millisecondes au 01/01/1970. Tu es donc, avec ta méthode, 108 ms après le début de cette journée, ce qui explique le résultat que tu as (et c'est bien le pb subodoré).
    La date debut que tu as dans la base (soit 108) doit être analysée en tant que chaine de caractères, non pas comme un chiffre. Tu n'as donc aucun besoin de passer par des BigDecimal (qui d'ailleurs servent à manipuler des nombres réels), ou quoi que ce soit d'autre. Si je comprends bien la manière dont la date est stockée, tu dois prendre les deux derniers caractères, les convertir avec un Integer.parseInt() -> tu auras l'année. Puis tu prends ce qui reste et avec la même opération tu récupères le mois.
    Mais le point principal à mon avis, et si tu veux progresser, c'est d'apprendre à lire la javadoc et à ne pas vouloir copier ce qui a été fait dans un autre langage Enfin à toi de voir !

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Par défaut
    Citation Envoyé par MaitreKaio Voir le message
    Mais le point principal à mon avis, et si tu veux progresser, c'est d'apprendre à lire la javadoc et à ne pas vouloir copier ce qui a été fait dans un autre langage Enfin à toi de voir !
    Je n'ai rien copié et ce que j'ai essayé est un effort personnel, de plus, l'application existante n'était pas écrite en Java!!!

    En tout cas merci

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 137
    Par défaut
    J'ai trouvé la solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String madate="23/10/2008";
    String[] tab = madate.split("/");
    String format = tab[2]+"/"+tab[1]+"/"+tab[0];
    C'est à vous de l'adapter à vos besoins

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 23/07/2002, 14h33
  2. soustraire deux dates ?
    Par joejoe dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2002, 15h53
  3. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21
  4. Réponses: 3
    Dernier message: 06/05/2002, 18h24
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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