Michel Perfetti
La gestion du temps en .Net
Autour de DateTime, tout un écosystème existe pour nous aider à gérer les problématiques de gestion du temps.
Par Michel Perfetti publié le 17/08/2008 à 23:59, lu 1414 fois, 5 pages
 2 | DateTime: notre point de départ
Pour gérer le temps, le Framework nous propose la structure « DateTime » dont voici une liste de ses propriétés :
 
Les propriétés de la structure DateTime

Les propriétés de la structure DateTime

 
On est en terrain connu : on reconnait les informations classiques comme l'heure, les informations de date (jour, mois, année). Minvalue et MaxValue sont respectivement les dates min et max prises en compte par le Framework .Net. Il faut faire attention avec ces valeurs : ce sont les valeurs minimum et maximum DU FRAMEWORK ! Ce ne sont pas forcement celle des API que l'on va utiliser : lorsque l'on travaille avec SQL Server 2005 par exemple, MinValue est plus petite que la valeur minimale autorisé par SQL Server 2005, nous verrons cela un peu plus loin.
« DateTime » permet de définir des dates en temps local et en temps universel et permet de passer de l'un à l'autre. En utilisant les propriétés statiques « Now » et « UtcNow », nous pouvons obtenir la date courante dans le fuseau horaire courant ou directement en temps universel :

DateTime now = DateTime.Now;

DateTime gmtNow = now.ToUniversalTime();

 

Console.WriteLine("Local: {0} {1}, GMT: {2} {3}",

        now.ToShortDateString(),

        now.ToShortTimeString(),

        gmtNow.ToShortDateString(),

        gmtNow.ToShortTimeString());

Le résultat est le suivant :
Local: 15/08/2008 09:52, GMT: 15/08/2008 07:52
Comment reconnaître qu'une date est une date UTC ou locale ? Il suffit de regarder la propriété « Kind ». « Kind » prend 3 valeurs :
  • Unspecified
  • Utc
  • Local
Lorsque l'on crée une date par code via « new » Kind est marqué à « Unspecified » car il n'est pas possible de savoir si la date correspond soit à une heure locale ou universelle. Par contre « DateTime.Now » et « DateTime.UtcNow » renvoient une date avec les bonnes valeurs. Ce champs est aussi utilisé dans les conversions entre UTC et temps local pour savoir si il y a une translation d'heure à faire.
 
» Démarrer une discussion