Czym Jest Unix Timestamp? Kompletnowe Wyjaśnienie Czasu Epoch
Szybka odpowiedź
Unix timestamp to liczba sekund od 1 stycznia 1970, 00:00:00 UTC (Unix epoch). Jest timezone-independent i łatwy do porównania. JavaScript używa milisekund (13 cyfr); Unix i większość API używa sekund (10 cyfr). Użyj naszego darmowego Timestamp Converter.
Wstęp
Unix timestamp (nazywany Unix epoch time, POSIX time lub Unix time) to liczba sekund od 1 stycznia 1970, 00:00:00 UTC —moment znany jako Unix epoch. Timestampy są powszechnie używane w systemach operacyjnych, bazach danych, logach i API ponieważ są timezone-independent (zawsze UTC), łatwe do porównania i kompaktowe. Jednak nie są ludzko-czytelne —1693526400 nic nie znaczy bez konwersji.
Krok po kroku
-
Zrozum epokę Uniksa
Epoka Uniksa przypada na 1 stycznia 1970 roku o godzinie 00:00:00 uniwersalnego czasu koordynowanego (UTC). Znacznik czasu Uniksa to liczba sekund od tego momentu. Pozytywne znaczniki czasu są po epoce; poprzedzają go negatywne znaczniki czasu (obsługiwane przez niektóre systemy).
-
Odróżnij sekundy od milisekund
Sygnatury czasowe systemu Unix podawane są zazwyczaj w sekundach (10 cyfr od 2026 r., np. 1693526400). Funkcje Date.now() i Date.getTime() JavaScript zwracają milisekundy (13 cyfr, np. 1693526400000). Zawsze sprawdzaj, jakiej jednostki oczekuje API — mieszanie ich jest najczęstszym błędem związanym ze znacznikami czasu.
-
Zrozum niezależność strefy czasowej
Sygnatury czasowe systemu Unix są zawsze podawane w formacie UTC. Nie zależą one od strefy czasowej użytkownika. Aby wyświetlić znacznik czasu w określonej strefie czasowej, przekonwertuj go na datę i zastosuj przesunięcie strefy czasowej. Dzięki temu znaczniki czasu są idealne do przechowywania i porównywania.
-
Dowiedz się o problemie roku 2038
Systemy używające 32-bitowych liczb całkowitych ze znakiem jako znaczników czasu przepełnią się 19 stycznia 2038 r. o godzinie 03:14:07 UTC — „problem roku 2038”. Nie ma to wpływu na systemy korzystające z 64-bitowych liczb całkowitych lub liczb JavaScript (64-bitowe liczby zmiennoprzecinkowe). Nowoczesne systemy są w dużej mierze bezpieczne pod kątem Y2038, ale starsze systemy wbudowane mogą nie być.
Przykłady
Znacznik czasu znanej daty
Wejście: 2023-09-01 00:00:00 UTC
Wyjście: 1693526400 (sekundy) lub 1693526400000 (milisekundy)
Epoka Uniksa
Wejście: 1970-01-01 00:00:00 UTC
Wyjście: 0
Granica problemu Y2038
Wejście: 2038-01-19 03:14:07 UTC
Wyjście: 2147483647 (maks. 32-bitowa liczba całkowita ze znakiem)
Typowe problemy
- Mieszanie sekund i milisekund — JavaScript używa milisekund (Date.now()), Unix i większość APIs używa sekund. Podziel przez 1000, aby przeliczyć ms na sekundy; pomnóż przez 1000 w odwrotnej kolejności.
- Zamieszanie w strefie czasowej — znaczniki czasu to UTC. Podczas wyświetlania przekonwertuj na lokalną strefę czasową użytkownika lub określ UTC. Nie stosuj przesunięć do surowego znacznika czasu.
- Problem z rokiem 2038 — przepełnienie 32-bitowych całkowitych znaczników czasu ze znakiem w dniu 19.01.2038. Aby tego uniknąć, użyj 64-bitowych liczb całkowitych lub liczb JavaScript.
- Ujemne znaczniki czasu — daty przed 1970-01-01 mają ujemne znaczniki czasu. Niektóre systemy ich nie obsługują.
Porady
- Zawsze sprawdzaj, czy API oczekuje sekund czy milisekund — jest to najczęstszy błąd związany ze znacznikiem czasu.
- Użyj ciągów ISO 8601 (np. „2023-09-01T00:00:00Z”) jako znaczników czasu czytelnych dla człowieka w APIs; używaj epoki Uniksa do przechowywania i obliczeń.
- JavaScript Date.now() zwraca milisekundy; podziel przez 1000 i podłogę, aby otrzymać sekundy.
- Skorzystaj z naszego konwertera znaczników czasu, aby przekonwertować znaczniki czasu na daty czytelne dla człowieka w przeglądarce.