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

API standards et tierces Java Discussion :

Problème de date


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Problème de date
    Bonjour,

    J'ai instancié un batch qui est chargé de migrer de données en fonction d'une date.

    Par défaut, il doit migrer les données de la veille, et donc pour calculer la date de la veille j'ai les fonctions suivantes:

    <code>
    // calcul pour la date précédente.
    final GregorianCalendar calendar = new GregorianCalendar();
    calendar.roll(Calendar.DAY_OF_YEAR, false);
    dateinf = calendar.getTime();
    </code>

    Le problème est que le 01/01/2009, programme a sortit comme date de la veille 2009/12/31 j'étais un avance d'une année.

    Quelqu'un connaitrait une méthode qui calculerait la date correctement ?

  2. #2
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    Il me semble qu'il faut utiliser la méthode add
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    calendar.add(Calendar.DAY_OF_MONTH, -1);

  3. #3
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Salut,

    roll() est une méthode dédiée à la soustraction de date. Toutefois la méthode roll() n’agit que sur le champ indiqué. Par ex, si tu as avez indiqué le champ jour, l’addition de plusieurs jours ne modifiera pas le mois, et encore moins l’année.

    Donc, il vaut mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Calendar calendar = Calendar.getInstance();
     
    calendar.add(DAY_OF_YEAR, -1); 
    Date date = calendar.getTime();

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Test par rapport a la solution proposée
    En testant la solution :
    <code>
    final GregorianCalendar calendar = new GregorianCalendar();
    calendar.roll(Calendar.DAY_OF_MONTH, false);
    dateinf = calendar.getTime();
    </code>

    Il m'a sorti 31/01/2009,le calcul de l'année et du mois est incorrect

  5. #5
    Membre Expert Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Par défaut
    C'est pour ça qu'il faut que tu utilise add comme montré.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Intérrogation ?
    Très bien merci de vos réponses.

    Je comprends mieux l'erreur, mais cela dit en ce qui concerne la méthode j'ai quant même si elle ne modifie que le champs que je spécifie DAY_OF_YEAR
    <code>
    calendar.roll(Calendar.DAY_OF_YEAR, false);
    </code>
    Pourquoi le calcule du mois était correct ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Par défaut Réponse
    Désolé guigui5931 je n'avais lu ton message trop vite j'avais pas vu que tu parlais de la méthode add au lieu de la méthode roll

Discussions similaires

  1. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  2. problème de date
    Par baboune dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 10/06/2004, 10h52
  3. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21
  4. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05
  5. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22

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