Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Changement de blog : retrouvez moi pour un nouveau blog sur : www.micro-souffle.fr

26 Apr

C# TimeStamp : comment passer de timestamp à datetime (fuseau horaire compris).

Publié par Antoine SEJALON  - Catégories :  #C

C# TimeStamp : comment passer de timestamp à datetime (fuseau horaire compris).

Bonjour, aujourd'hui je vais vous présenter une des solutions pour obtenir une datetime à partir d'un timestamp unix.

Nous allons avoir un timestamp (long) : 1460379633 //qui représente le 11/4/2016 à 15:00:33

Pour prendre en compte le fuseau horaire, il faut déjà le définir (pour le fuseau Europe j'utilise l'id "E. Europe Standard Time"). Vous pouvez bien sur rechercher les différents ids disponibles. liste d'aide pour les timezoneids : ici

Voici le code :

TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("E. Europe Standard Time");

Nous allons ensuite appeler une methode de conversion du timestamp :

var dateTime = ConvertFromUnixTimestamp(timestamp);

Voici la methode à créer :

static DateTime ConvertFromUnixTimestamp(double timestamp) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);//on recupere la date zero de référence : le 1/1/1970 00:00:00 return origin.AddSeconds(timestamp);//on ajoute le timestamp (nombre de secondes depuis la date zero) }

dateTime est alors égal à 11/4/2016 à 13:00:33. Le fuseau horaire n'ayant pas encore été pris en compte, il y à un décalage de deux heure dans mon cas.

Pour y remédier, nous allons utiliser la variable timeZoneInfo défini plus haut pour gérer le décalage du fuseau horaire.

 

DateTime dateTimeEurope = dateTime.Add(tzi.BaseUtcOffset);

dateTimeEurope vos alors 11/4/2016 à 15:00:33.

 

Cette méthode peut être améliorée avec notamment une détection automatique par code du fuseau horaire de la machine qui l'exécute.

 

A bientôt et bon code.

Commenter cet article

À propos

Changement de blog : retrouvez moi pour un nouveau blog sur : www.micro-souffle.fr