IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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

SommaireLes Dates (7)
précédent sommaire suivant
 

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");

Mis à jour le 4 avril 2005 farscape

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));

Mis à jour le 4 avril 2005 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 :

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

Mis à jour le 4 avril 2005 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 :

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);

Mis à jour le 4 avril 2005 farscape

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());

Mis à jour le 27 novembre 2005 farscape

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

Mis à jour le 27 novembre 2005 farscape

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
voir la documentation MSDN pour les autres formats

Mis à jour le 27 novembre 2005 farscape

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

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 © 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.