IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Les Dates
        Comment calculer le nombre de jours entre deux dates ?
        Comment ajouter un nombre de jours à une date ?
        Comment mettre à jour un CDateTimeCtrl ?
        Comment récupérer la valeur d'un CDateTimeCtrl ?
        Comment calculer le temps passé avec un CTime ?
        Comment récupérer la date en français avec un CTime ?
        Comment récupérer la date du jour ?



Comment calculer le nombre de jours entre deux dates ?
Créé le 04/04/2005[haut]
auteur : Farscape
En utilisant les classes CTime et CTimeSpan

//-----------------------------
int GetSpanDays(const CTime TimeBegin,const CTime TimeEnd)
{
   CTimeSpan Span = ( TimeEnd -TimeBegin);

   return  Span.GetDays();
}
//-----------------------------
int GetSpanDays(const char * szDteBegin,const char *szDteEnd)
{
    ASSERT(szDteBegin && szDteEnd);

    CString strDteBegin= szDteBegin;
    CString strDteEnd=szDteEnd;

    ASSERT(strDteBegin.GetLength()==8 && strDteEnd.GetLength()==8);

   CTime DateBegin(atoi(strDteBegin.Right(4)),                    
                    atoi(strDteBegin.Mid(2,2)),
                    atoi(strDteBegin.Left(2)),                    
                    1,1,1);

    CTime DateEnd(atoi(strDteEnd.Right(4)),
                  atoi(strDteEnd.Mid(2,2)),
                  atoi(strDteEnd.Left(2)),
                  1,1,1);

    ASSERT(DateBegin<=DateEnd);

    return GetSpanDays(DateBegin,DateEnd);
}
//-----------------------------
int n=GetSpanDays("01011970","07011970");

Comment ajouter un nombre de jours à une date ?
Créé le 04/04/2005[haut]
auteur : Farscape
En utilisant les classes CTime et CTimeSpan

//-----------------------------
CTime AddDays(const CTime &rTimeRef,const int nAddDays)
{
CTime t;
CTimeSpan ts( abs(nAddDays) , 0 , 0 , 0);;

if(nAddDays<0) t=(rTimeRef -ts);
else      t=(rTimeRef + ts);
return t;
}
//-----------------------------
CString AddDays(const char *szDteRef,const int nAddDays)
{
ASSERT(szDteRef);

CString str= szDteRef;
ASSERT(str.GetLength()==8);
CTime Date(atoi(str.Right(4)),atoi(str.Mid(2,2)),atoi(str.Left(2)),1,1,1);
CTime t=AddDays(Date,nAddDays);
str=t.Format("%d%m%Y");
return str;
}
//-----------------------------------------------------
AfxMessageBox(AddDays("01011970",6));

Comment mettre à jour un CDateTimeCtrl ?
Créé le 04/04/2005[haut]
auteur : Farscape
Le contrôle CDateTimeCtrl disponible dans la palette d'outils dans les ressources permet l'affichage de l'heure ou d'une date sous forme numérique ou littérale.

Pour régler la date deux méthodes sont disponibles :
Mise à jour par une méthode du contrôle :
Apres avoir associé avec ClassWizard un objet CDateTimeCtrl à l'identifiant du contrôle :

//CDateTimeCtrl m_DateTimeCtrl; dans le header bien sur

CTime Time=CTime::GetCurrentTime(); // date courante
 VERIFY(m_DateTimeCtrl.SetTime(&Time)); // Maj.
Mise à jour par une variable de type CTime :
Apres avoir associé avec ClassWizard une variable CTime à l'identifiant du contrôle :

/*CTime */ m_DateTime=CTime::GetCurrentTime();
UpdateData(FALSE); // mise a jour des controles datas -> controles

Comment récupérer la valeur d'un CDateTimeCtrl ?
Créé le 04/04/2005[haut]
auteur : Farscape
Le contrôle CDateTimeCtrl disponible dans la palette d'outils dans les ressources permet l'affichage de l'heure ou d'une date sous forme numérique ou littérale.

Pour récupérer la date deux méthodes sont disponibles :

Récupération par une méthode du contrôle :
Apres avoir associé avec ClassWizard un objet CDateTimeCtrl à l'identifiant du contrôle :

//CDateTimeCtrl m_DateTimeCtrl; dans le header bien sur
CTime timeTime;
DWORD dwResult = DateTimeCtrl.GetTime(timeTime);

CString str= timeTime.Format("%d%m%Y"); // jour /mois / année 
AfxMessageBox(str) ;
Récupération par une variable de type CTime :
Apres avoir associé avec ClassWizard une variable CTime à l'identifiant du contrôle :

//CTime  m_DateTime ;
UpdateData(TRUE); // mise a jour des datas <- controles 

CString str= m_DateTime.Format("%d%m%Y"); // jour /mois / année 
AfxMessageBox(str) ;

Comment calculer le temps passé avec un CTime ?
Créé le 27/11/2005[haut]
auteur : Farscape

CTime BeginTime=CTime::GetCurrentTime();

//votre traitement ici

CTime EndTime=CTime::GetCurrentTime();// fin de traitement
    
    CTimeSpan spanBeg(BeginTime.GetTime());
    CTimeSpan spanEnd(EndTime.GetTime());
    spanEnd-=spanBeg;

    CString str;
    str.Format(" Durée:%02dHr %02dMn %02dSec",
                spanEnd.GetHours(),
                spanEnd.GetMinutes(),
                spanEnd.GetSeconds());

Comment récupérer la date en français avec un CTime ?
Créé le 27/11/2005[haut]
auteur : Farscape
Il suffit d'invoquer la fonction setlocale avant :

setlocale( LC_ALL, "" );
LC_ALL pour tous les types : monétaire ,le temps etc ?
le deuxième argument à "" permet de récupérer le paramétrage par défaut de la plateforme .

voir MSDN pour plus de renseignements Exemple :

#include <locale.h>
setlocale( LC_ALL, "" );
CTime theTime = CTime::GetCurrentTime();
CString  s = theTime.Format( "%A, %B %d, %Y" );// jeudi, avril 14, 2005

Comment récupérer la date du jour ?
Créé le 27/11/2005[haut]
auteur : Farscape
En utilisant la classe CTime :

CTime theTime = CTime::GetCurrentTime();
CString s = theTime.Format("%d%m%Y") ; //  14042005 
s = theTime.Format( "%A, %B %d, %Y" );// Thursday, April 14, 2005



Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.