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 :

convertir en Sec 2 dates séparées de x mois->stat mensuel


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut convertir en Sec 2 dates séparées de x mois->stat mensuel
    Bonjour,

    Je voudrais réaliser des statistiques mensuelles d'une connexion. Mais je ne sais pas comment faire pour avoir un détail pour chaque mois avec l'exemple suivant :

    Si par exemple ma date de départ est : 20/01/2006 à 13h56
    et ma date de fin est : 05/02/2006 à 12h15.

    Sur le coup j'avais pensé à convertir la date de départ et de fin en double, et la différence m'aurait donné le temps entre ces 2 dates en secondes.....
    Mais le problème c'est que cette connexion est à cheval sur 2 mois, et que je voudrais faire mes calculs pour chaque mois. Et la je suis perdu.

    Auriez-vous une idée ?

    Merci
    Fred

  2. #2
    Membre actif
    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
    Points : 242
    Points
    242
    Par défaut
    Il est possiblede cpnvertir les 2 dates en 2 TDateTime, (voir les fonction associées à TDateTme). Les TdateDime sont des nombres de type "double", la partier entière est un nombre de jours et la partie fractionnaire une fraction de jours (3600*24 secondes):


    [/code]
    TDateTime dtDepart, dtFin;
    int secondes;
    ......
    ......
    double Duree = double(dtFin) - double(dtDepart);
    secondes = int (Duree * 3600*24);

    Gilbert PASQUALINI

  3. #3
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut FAQ et Aide
    Salut !

    Je sais pas si j'ai bien compris !? mais je pense ce lien te fera l'affaire !
    http://c.developpez.com/faq/bcb/?pag...enceentredates

    avec aussi :HoursBetween,MinutesBetween...

    A+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    En fait ce que je cherche, par exemple pour ces 2 dates (
    ma date de départ est : 20/01/2006 à 13h56 et ma date de fin est : 05/02/2006 à 12h15) c'est d'obtenir le temps de connexion pour Janvier et février séparemment à partir de ces 2 dates pour un seul temps de connexion.

    Merci

  5. #5
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut Proposition
    Ben ,le problème c'est lors de la déconnexion !
    Enfaite,par un 1er example lors de la connexion tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TDateTime Debut=Now(); //et que Now() te donne le 10/01/2005 14:00
    et lors de la déconnexion c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TDateTime Fin=Now(); //Et que cette fois si Now() te donne 11/01/2005 08:37
    Dans ce cas, tu calcule la différence est tu l'ajoute à la variable que tu utilise pour cumuler le temps de connexion pour ce mois (Janvier) , pourquoi? parceque le mois n'as pas changé !!


    2eme example :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TDateTime Debut=Now(); //et que Now() te donne cette fois ci le 10/01/2005 14:00
    et lors de la déconnexion c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TDateTime Fin=Now(); //Et que cette fois si Now() te donne 02/02/2005 08:37 (un autre mois)
    Dans ce cas la tu calcule la différence entre "10/01/2005 14:00" et "31/01/2005 23:59" et tu le met dans ta variable spéciale pour le mois Janvier ,puis tu met une autres variable spéciale pour ton moi Février dont ça valeur va être 2 jours et 8 heure et 37 minute!

    Rq:ce que je veu dire par variable c'est l'endroi ou tu stock tes temps de connexions,soit une base de donnée dans un champs "Temps de connexion",ou dans un fichier text...?

    a+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Bonjour,

    Merci Interruption13h pour ton idée.
    Je vais essayer de faire comme ca.

  7. #7
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut de rien
    Enfin,si probleme,je t'écoute toujours,on essaye de régler ça !!

    a+
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  8. #8
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Mon idée est la suivante :

    Utilise un vecteur a 12 éléments, de type TDateTime ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TDateTime Vec_Stat[12] ;
    En suite tu vas utiliser un Timer avec un interval = 1Min ~ 60000 ;
    et dans son événement OnTime tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TDateTime dDate = Now() ;
    Utilise DecodeDate(dDate) pour avoir l'Année, le Mois, et le Jour; de la date dDate ;

    Tu peu faire mieu en utilisant :
    il faut ajouter la lib :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <DateUtils.hpp>
    tu auras aussi besoin d'une variable qui pointe sur un élément du vecteur par exemple pMois, cette variable sera enregistrer avec le vecteur Vec_Stat dans un fichier par exemple….

    Au démarrage du programme tu vas lire la variable et le vecteur, et donc l'événement OnTime devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Word Yr, Mth, Day ;
     
    TDateTime dDate = Now() ;
     
    if(MonthOf(dDate) == pMois)
      Alors incrémante la case d'une minute : Vec_Stat[pMois] + 1 Min
    sinon 
      {
        Alors incrémante la case d'une minute : Vec_Stat[pMois] + 1 Min
        et incrémante aussi pMois ; // ou bien pMois = MonthOf(dDate) ;
       }
    N'oubli pas quand tu sors du programme d'enregistrer la variable et le vecteur ...

    L'événement OnTime de Timer est en relation avec la connexion et la déconnexion, càd quand tu te connecte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Timer1 -> Enabled = true ;
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Timer1 -> Enabled = false ;
    quand tu déconnecte ...

    Voilà, je pense que j'ai fait le tour,

    pour plus d'info je donne un programme qui détecte le changement du mois en cours :
    Copier le dans un timer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <DateUtils.hpp>
    .....
    .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    static TDateTime dDate = Now() ;
    TDateTime Nw = Now() ;
     
    if(MonthOf(dDate) != MonthOf(Nw))
      ShowMessage("Passage du mois [" + IntToStr(MonthOf(dDate)) + "] au mois [" +
                  IntToStr(MonthOf(Nw)) + "]" );
    A bientôt @+
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Merci pour vos aides.
    kmaniche, tu m'as indiqué une bonne idée.
    J'ai mis un TTimer avec un intervalle de 60s, et j'incrémente tout bêtement mes variables en fonction du mois en cours..........

    Je n'y avais pas pensé avant !!!!

    Merci pour vos aides

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

Discussions similaires

  1. convertir une chaine en date
    Par imane_bennouna dans le forum Langage
    Réponses: 13
    Dernier message: 22/09/2006, 19h58
  2. [vba] convertir une string en date
    Par megapacman dans le forum Access
    Réponses: 1
    Dernier message: 11/09/2006, 15h46
  3. Convertir une chaîne en date
    Par davinout dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2006, 19h35
  4. Comment convertir ce style de date ?
    Par Bruno13 dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 04h03
  5. [Firebird] Convertir une String en date
    Par laffreuxthomas dans le forum SQL
    Réponses: 1
    Dernier message: 04/05/2005, 19h42

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