[.NET] Convertir un timestamp POSIX en date

Ceci est le tout premier article consacré à la programmation avec le Framework .NET.

Tous les codes donnés sont écrits en C#, mais peuvent être aisément convertis dans n’importe quel autre langage .NET de votre choix (VB.NET, C++/CLI, etc).

Préambule

On commence en douceur avec un snippet permettant de convertir un timestamp POSIX en date traditionnelle 😉

C’est toujours pratique de l’avoir sous le coude au cas où !

Qu’est-ce qu’un « timestamp POSIX » au fait ? C’est un nombre entier (codé sur 32 bits) représentant le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:00 UTC, comme décrit dans la norme POSIX.

Code

Ce snippet convertit ce timestamp sous forme de chaîne de caractères représentant l’équivalent en date et heure locales :

String POSIXTimestampToDate(String timestamp)
{
    DateTime date = new DateTime(1970, 1, 1, 0, 0, 0);

    date = date.AddSeconds(Double.Parse(timestamp)).ToLocalTime();

    return date.ToString();
}

Exemple

En bonus et en guise d’exemple, voici comment extraire la date d’installation de Windows en utilisant ce snippet (en effet, celle-ci est stockée dans le registre sous la forme d’un timestamp POSIX) :

using Microsoft.Win32;

String GetSystemInstallDate()
{
    String data = Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion", "InstallDate", "").ToString();

    return POSIXTimestampToDate(data);
}

Exemple de la sortie d'une application affichant la date d'installation.

Exemple de la sortie d’une application affichant la date d’installation.