Czas Unix (Unix timestamp) to liczba sekund, które upłynęły od 1 stycznia 1970 roku 00:00:00 UTC. Ta data nazywana jest „epoką Unix" i to od niej praktycznie każdy nowoczesny system operacyjny, baza danych i język programowania liczy czas.
Dlaczego akurat 1970 rok
Data nie została wybrana ze względu na jakieś szczególne wydarzenie, lecz z czystej praktyczności: twórcy Uniksa w Bell Labs na początku lat 70. po prostu wzięli aktualny wtedy rok jako wygodny, okrągły punkt odniesienia. Nie ma za tą datą żadnego głębszego sensu.
Dlaczego ten format dominuje w projektach outsourcingowych
W polskim sektorze IT, silnie zorientowanym na projekty outsourcingowe dla klientów z całego świata, backendy Java czy .NET często logują zdarzenia jako Unix timestamp właśnie dlatego, że ułatwia to porównywanie i sortowanie zdarzeń pochodzących z serwerów rozsianych po różnych strefach czasowych bez ręcznej konwersji.
Problem roku 2038
Wiele starszych systemów przechowuje czas Unix jako 32-bitową liczbę całkowitą ze znakiem, która może reprezentować wartości tylko do 19 stycznia 2038 roku. Po tej dacie taka liczba przekroczy zakres — to nie tylko problem teoretyczny, bo starsze sterowniki przemysłowe i urządzenia wbudowane potrafią działać dekadami bez aktualizacji oprogramowania.
Do czego to się przydaje
- Konwertowanie znacznika czasu z logów lub odpowiedzi API na zrozumiałą datę i godzinę.
- Obliczanie różnicy między dwoma momentami czasu bez ręcznych obliczeń kalendarzowych.
- Diagnozowanie problemów związanych ze strefami czasowymi przy pracy ze znacznikami czasu.
Czas Unix a sekundy przestępne
Czas Unix zakłada, że każda doba trwa dokładnie 86400 sekund, ignorując sekundy przestępne, które są od czasu do czasu dodawane do UTC w celu skompensowania spowolnienia obrotu Ziemi. Oznacza to, że czas Unix technicznie nie jest dokładną reprezentacją UTC w momentach dodania sekundy przestępnej — większość systemów po prostu „rozciąga" lub powtarza jedną sekundę, aby uniknąć skoku w liczniku.