UPDATE : code mis à jour pour corriger l’erreur signalée par Rudy Huyn (il faut bien sûr tenir compte du décalage horaire et des décalages été/hiver)

Si vous faites du .NET, il y a peu de chances que vous ayez besoin d’utiliser le temps Unix. Cependant, si jamais vous en avez besoin, il n’y a pas à ma connaissance de méthode effectuant la conversion dans le framework .NET, il va donc falloir effectuer la conversion à la main. Heureusement, ce n’est pas compliqué.

Le temps Unix est défini par un nombre entier, représentant le nombre de secondes écoulées depuis le début de l’univers, le 1er janvier 1970. Lorsqu’on sait ça, la conversion est toute simple :

private static DateTime origin = new DateTime(1970, 1, 1, DateTimeKind.Utc); 

public static DateTime UnixTimeToDateTime(long timespan) 
{ 
    return origin.AddSeconds(timespan).ToLocalTime(); 
} 

public static long DateTimeToUnixTime(DateTime date) 
{ 
    TimeSpan ts = date.ToUniversalTime() - origin; 
    return (long)ts.TotalSeconds; 
}

Pour la petite histoire, lorsque le temps Unix est codé sur un entier 32 bits, on ne peux coder les dates que jusqu’au 19 janvier 2038, si ce système est encore utilisé ce jour là, on risque d’avoir le fameux bug de l’an 2038, un bug encore pire que le bug de l’an 2000. Heureusement, les systèmes 64 bits devraient se généraliser dans les années à venir pour nous éviter ces problèmes.