C# - Konwersja pomiędzy DateTime a czasem uniksowym (timestamp, czas POSIX)
W tym artykule chciałbym umieścić implementację dwóch prostych metod pozwalających na obsługę czasu uniksowego (unix timestamp, unix time, czas POSIX).
Czym jest czas uniksowy?
Nie wdając się w szczegóły jest to liczba sekund, która upłynęła od pierwszego stycznia 1970 roku (czas UTC). Jest to bardzo popularny format przechowywania znaczników czasowych pewnych zdarzeń, operacji i tak dalej. Z tego powodu warto wiedzieć jak sobie poradzić z czasem uniksowym w Microsoftowych frameworkach opartych na języku C#, w których mamy do czynienia z obiektem DateTime. Nie ma on w swojej domyślnej implementacji żadnych metod pozwalających na konwersję czasu POSIX na obiekt DateTime, czy konwersję odwrotną. Dlatego warto wiedzieć jak najprościej poradzić sobie z tym zagadnieniem na własną rękę.
Jak konwertować między sobą czas uniksowy i obiekty DateTime?
Najpierw spróbujmy pozyskać z czasu uniksowego stosowny obiekt DateTime, odpowiadający danemu znacznikowi czasowemu. Spójrzmy na poniższą przykładową implementację takiej funkcji:{
DateTime unixEpochDateTime = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc);
return unixEpochDateTime.AddSeconds(timeStamp).ToLocalTime();
}
Podobnie rzecz się będzie miała w przypadku konwersji odwrotnej. Tym razem jednak wyliczymy różnicę pomiędzy przekazaną datą, a początkiem epoki uniksa.
{
DateTime unixEpochDateTime = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc);
TimeSpan difference = date - unixEpochDateTime;
return (long)difference.TotalSeconds;
}
Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!