FAQ VC++ et MFCConsultez toutes les FAQ
Nombre d'auteurs : 20, nombre de questions : 545, dernière mise à jour : 5 avril 2013 Ajouter une question
Cette faq a été réalisée pour répondre aux questions les plus fréquement posées sur le forum Développement Visual C++
Je tiens à souligner que cette faq ne garantit en aucun cas que les informations qu'elle contient sont correctes ; Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou si vous souhaitez devenir redacteur, lisez ceci.
Sur ce, je vous souhaite une bonne lecture. Farscape
- 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 ?
En utilisant les classes CTime et CTimeSpan
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | //----------------------------- 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"); |
En utilisant les classes CTime et CTimeSpan
Code C++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //----------------------------- 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)); |
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 :
Code C++ : | Sélectionner tout |
1 2 3 4 | //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 :
Code C++ : | Sélectionner tout |
1 2 | /*CTime */ m_DateTime=CTime::GetCurrentTime(); UpdateData(FALSE); // mise a jour des controles datas -> controles |
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 :
Code C++ : | Sélectionner tout |
1 2 3 4 5 6 | //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 :
Code C++ : | Sélectionner tout |
1 2 3 4 5 | //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); |
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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()); |
Il suffit d'invoquer la fonction setlocale avant :
Code C++ : | Sélectionner tout |
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 :
Code C++ : | Sélectionner tout |
1 2 3 4 | #include <locale.h> setlocale( LC_ALL, "" ); CTime theTime = CTime::GetCurrentTime(); CString s = theTime.Format( "%A, %B %d, %Y" );// jeudi, avril 14, 2005 |
En utilisant la classe CTime :
Code c++ : | Sélectionner tout |
1 2 3 4 | CTime theTime = CTime::GetCurrentTime(); CString s = theTime.Format("%d%m%Y") ; // 14042005 s = theTime.Format( "%A, %B %d, %Y" );// Thursday, April 14, 2005 |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes 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 © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.