Vous êtes sur la page 1sur 2

OFFICE DE LA FORMATION PROFESSIONNELLE & DE LA PROMOTION DU TRAVAIL

INSTITUT SUPERIEUR DES TECHNOLOGIES DE LINFORMATION ET DE LA COMMUNICATION DE SAFI

TP 7 :
POO : MANIPULER LA CLASSE
D AT E T I M E
La classe DateTime permet deffectuer diverses oprations sur les dates : dterminer le jour de la semaine, calculer une
date x jours, dtermin si une date est antrieure ou postrieure une autre, etc.
Un objet DateTime peut contenir une date comprise entre le premier janvier de lan un midi et le 31 dcembre 9999. Il
comprend la fois une date et une heure avec accs la milliseconde.
Les diffrents constructeurs de la classe DateTime sont :

DateTime( int anne, int mois,int jour); Cre un objet DateTime en spcifiant lanne, le mois et le jour.
Pour le 14 juillet 1789, on crit : DateTime dt=new DateTime(1789, 7, 14);
DateTime( int a, int m, int j, int heure, int minutes, int secondes); Cre un objet DateTime en spcifiant une date
(anne, mois et jour) ainsi que lheure, les minutes et les secondes.
DateTime( int a, int m, int j, int heure, int minutes, int secondes, int millisec); Mme chose mais avec les
millisecondes en plus.
DateTime(long); Cre un objet DateTime en spcifiant le nombre de ticks (intervalles de cent nanosecondes)
depuis le premier janvier de lan un midi.

LES PROPRIETES DE LA CL ASSE DATETI ME :


Date

DateTime

Day
DayOfWeek

Int
DayOfWeek

DayOfYear
Hour
Millisecond
Minute
Month
Now

Int
Int
int
int
int
DateTime

Second
Ticks

int
long

TimeOfDay
Today

TimeSpan
DateTime

UtcNow

DateTime

Year

int

Donne la date, avec la partie heure initialise minuit. Il sagit dune proprit en lecture uniquement.
Cette proprit permet disoler la partie date (au sens usuel du terme) dun objet DateTime.
Jour dune date (valeur entre 1 et 31).
Jour de la semaine. DayOfWeek renvoie une des valeurs de lnumration DayOfWeek : Sunday
(dimanche), Monday, Tuesday, Wednesday, Thursday, Friday et Saturday (samedi). ces
mnmoniques correspondent les valeurs 0 pour dimanche, 1 pour lundi et 6 pour samedi.
DateTime dt = new DateTime(1789, 7, 14);
switch (dt.DayOfWeek)
{.....
case DayOfWeek.Tuesday : .....; break;
.....}
Mais on peut aussi crire : n = (int)dt.DayOfWeek; n contient 2 : ctait un mardi.
Jour de lanne (valeur comprise entre 1 et 366).
Partie heure de la date (valeur entre 0 et 23).
Partie millisecondes de la date (valeur entre 0 et 999).
Partie minute de la date (valeur entre 0 et 59).
Mois (valeur entre 1 et 12).
Proprit statique qui donne la date du jour (y compr is les heures, minutes, etc.) au moment
dexcuter la proprit :
DateTime dt = DateTime.Now;
Partie seconde de la date (valeur entre 0 et 59).
Nombre dintervalles de cent nanosecondes qui se sont couls depuis le premier janvier de lan un
midi.
Dure depuis minuit.
Proprit statique qui donne la date du jour (mais avec lheure initialise zro heure). Semblable
Now mais ne tient pas compte de lheure.
Semblable Now (il sagit donc dune proprit statique) mais donne la date et lheure en temps
universel (temps universel coordonn, encore souvent appel temps de Greenwich ).
Partie anne de la date.

LES METHODES DE LA CLASSE DATETIME :


DateTime Add(TimeSpan interv);

Page : 1

Renvoie la date correspondant la date de lobjet sur lequel por te lopration


et laquelle on ajoute lintervalle de temps interv.
Loprateur += peut remplacer cette fonction.
Pour obtenir la date dans cent jours :
DateTime dt = DateTime.Today;
ANNEE DE FORMATION 2014/2015

W.JAKJOUD

OFFICE DE LA FORMATION PROFESSIONNELLE & DE LA PROMOTION DU TRAVAIL


INSTITUT SUPERIEUR DES TECHNOLOGIES DE LINFORMATION ET DE LA COMMUNICATION DE SAFI

DateTime AddDays(double n);

dt += new TimeSpan(100, 0, 0, 0);


Renvoie la date dans n jours (n pouvant tre ngatif et la partie fractionnaire
indiquant une partie de jour, par exemple 0.25 pour six heures) :
dt = dt.AddDays(100);
On trouve aussi, sous le mme format : AddYears, AddMonths, AddHours,
AddMinutes, AddSeconds et AddMilliseconds.

int
Compare(DateTime t1,
DateTime t2);

Mthode statique qui compare deux dates. Compare renvoie :


0 si les deux dates sont les mmes,
1 si t1 est antrieur t2,
1 si t1 est postrieur t2.
Les oprateurs ==, !=, <, <=, > et >= peuvent tre utiliss au lieu de Compare
et de CompareTo pour comparer deux dates.

int
CompareTo(DateTime t);

Compare la date de lobjet sur lequel por te la fonction avec t. CompareTo


renvoie :
zro si les deux dates sont les mmes,
une valeur positive si la date de lobjet est postrieure t,
une valeur ngative si la date de lobjet est antrieure t.
Les oprateurs ==, !=, <, <=, > et >= peuvent tre utiliss la place des
fonctions
de comparaison.

int
DaysInMonth(
int anne, int mois);

Mthode statique qui renvoie le nombre de jours du mois spcifi en argument


:
n = DateTime.DaysInMonth(1900, 2);
n contient 28 (1900 ntait pas une anne bissextile puisque sont bissextiles les
annes multiples de quatre, sauf les annes centenaires bien que les annes
multiples de 400 le soient).

string
ToString(string format);
DateTime
Parse(string s);

Met en format une date. Voir les formats et exemples plus loin dans ce
chapitre.
Mthode statique qui renvoie une date partir dune chane de caractres.
Parse gnre :
lexception FormatException si s ne contient pas une date valide
lexception ArgumentException si s est une chane nulle.
string s = "14/7/1789";
DateTime dt = DateTime.Parse(s);
Il est prfrable de placer cette dernire instruction dans un try/catch pour
intercepter les erreurs sur date.
Par dfaut, Parse tient compte des caractristiques rgionales pour la
reprsentation
des dates. Nous montrerons plus loin comment spcifier une autre
reprsentation de date.

bool IsLeapYear(int anne);

Mthode statique qui renvoie true si lanne est bissextile.

Exercices :
1. Demander la saisie des valeurs du jour, mois et anne puis crer un objet DateTime d1
2. Afficher cet objet avec ToString()
3. Comparer cet objet avec la date systme (DateTime.Now)
4. Demander la saisie dune chaine de caractres contenant une date puis la convertir un objet DateTime d2 :
string x = Console.ReadLine(); // exemple 12/02/2013

DateTime d2 = DateTime.Parse(x);
5. Calculer la dure entre la premire date saisie et la deuxieme, pour cela on utilise un objet TimeSpan (interval du
temps) :
DateTime d1 = DateTime(2014,12,02); // temps de dpart
DateTime d2 = DateTime.Now; // temps darrive
TimeSpan ts = d2 d1;
ts.TotalMilliseconds donne alors la dure, exprime en millisecondes.
6. Afficher le jour de la date d1, le mois de d2 et lanne de d1.
Page : 2

ANNEE DE FORMATION 2014/2015

W.JAKJOUD