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

C++Builder Discussion :

N° jour de l'année<-->Date [FAQ]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par défaut N° jour de l'année<-->Date
    Bonjour,
    existe-t-il une méthode (de TDate ?) permettant d'afficher le numéro du jour de l'année en fonction d'une date donnée et vice-versa ?
    Par exemple :
    45e jour de l'année = 14 février
    24 mai = 144e jour de l'année
    etc...

    J'ai testé la méthode operator int() mais la référence choisie est le 30 décembre 1899 donc je suis obligé de retrancher 38717 jours (année 2006). Il y a moyen de modifier cette référence ? L'idéal serait de prendre le 1er janvier de l'année en cours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int result;
    result = (DateTimePicker1->Date.operator int() - 38717) % 365;

  2. #2
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    La fonction DayOfTheYear ne t'irait pas???

    Citation Envoyé par Aide de Builder
    Renvoie le nombre de jours compris entre une valeur TDateTime spécifiée et le 31 décembre de l'année antérieure.

    Unité

    DateUtils

    Catégorie

    routines date/heure

    extern PACKAGE Word __fastcall DayOfTheYear(const System::TDateTime AValue);

    Description

    Appelez DayOfTheYear pour obtenir la position ordinale du jour d'une valeur TDateTime dans l'année correspondante. Ainsi, une valeur TDateTime faisant référence au 1er janvier génère le résultat 1, les dates arrêtées au 2 janvier renvoient 2, les dates arrêtées au 1er février renvoient 32, etc.

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par défaut
    Merci ! Comme quoi je suis pas passé loin...

    Et pour faire l'inverse, y a-t-il une méthode aussi simple que la précédente ?
    Exemple : 198e jour --> 17 juillet
    Je voudrais que la date correspondante soit sélectionnée dans le DateTimePicker.

    Merci.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Par défaut
    En utilisant le TDateTime, la partie entière de TDateTime est un nombre de jours.
    Pour connaitre l'année d'une date, utiliser la fonction de TDateTime :

    void __fastcall DecodeDate(unsigned short* year, unsigned short* month, unsigned short* day) const;
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TDateTime maDate;
    ....
    unsigned short year, month, day;
    maDate.DecodeDate(&year, &month, &day);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Ensuite coder le premier janvier : 
    TDateTime dtPremier = EncodeDate(year, 1, 1);
    Le numéro du jour de l'année s'obtiendra par 
    int numero = int(maDate - dtPremier) + 1;
    Le premier janvier est le numéro 1.

    Cela peut être utiliser dans l'autre sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maDate = dtPremier + double(numero - 1);

  5. #5
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    N'oubliez pas de faire une recherche dans la FAQ http://c.developpez.com/faq/bcb/?pag...#jourdansannee

  6. #6
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Par défaut
    Bon bah finalement j'ai trouvé un code tout simple et je l'ai modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TDateTime d=TDateTime(YearOf(DateTimePicker1->Date),1,1);
    d=d.operator + (jour) - 1;
    FormatDateTime("dd//mm//yyyy",d);
    DateTimePicker1->Date = d;

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

Discussions similaires

  1. Tous les jours de l'année au format date
    Par piotrr dans le forum C#
    Réponses: 10
    Dernier message: 12/12/2008, 19h17
  2. Récupérer l'année de la date du jour
    Par ERWPER dans le forum iReport
    Réponses: 2
    Dernier message: 01/06/2007, 16h22
  3. [Dates] Convertir jour de l'année en une date
    Par Ouark dans le forum Langage
    Réponses: 2
    Dernier message: 29/03/2007, 12h31
  4. Réponses: 6
    Dernier message: 25/09/2006, 14h51
  5. Retrouver date à partir des n° de jour, semaine et année
    Par infosorome dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/12/2005, 11h21

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