Skip to main content

Data na timestamp

Konwertuj datę na znacznik czasu.

Zamiana daty na znacznik uniksowy

Data jest niejednoznaczna, dopóki nie powiesz, w jakiej jest strefie. Znacznik nie jest — to pojedynczy moment liczony od 1970 roku w UTC. Przeliczenie między nimi wymaga wskazania strefy, a pomyłka przesuwa wynik o godziny.

Jak to działa

  • Interpretuje podaną datę i godzinę w wybranej strefie, a potem liczy sekundy od epoki uniksowej.
  • Podaje wynik w sekundach i milisekundach, bo różne systemy oczekują różnych jednostek.
  • Wskazuje strefę jawnie, zamiast po cichu zakładać strefę przeglądarki — a to właśnie stąd bierze się większość błędów konwersji.
znacznik = sekundy od 1970-01-01T00:00:00Z

ta sama godzina zegarowa w dwóch strefach daje dwa różne
znaczniki, rozdzielone różnicą ich przesunięć

milisekundy = sekundy × 1000

Przykład z liczbami

Godzina 15:00 dnia 20 marca 2026, interpretowana najpierw jako UTC, a potem jako czas warszawski.

  1. 2026-03-20T15:00:00Z → 1774018800
  2. w milisekundach → 1774018800000
  3. 2026-03-20T15:00:00+01:00 (Warszawa) → 1774015200
  4. oba różnią się o 3600 sekund — dokładnie o godzinę

Ta sama data, ten sam odczyt zegara, dwa znaczniki oddalone o godzinę. Strefa to nie szczegół formatowania, tylko część znaczenia daty.

Jak czytać wynik

  • Sam napis daty w rodzaju 2026-03-20 jest według specyfikacji ECMAScript parsowany jako północ UTC, a 2026-03-20T00:00:00 bez Z jako czas lokalny. Różnią się o twoje przesunięcie i dlatego wejścia zawierające samą datę to częsty powód błędów o jeden dzień.
  • Czas uniksowy pomija sekundy przestępne. Każda doba ma dokładnie 86 400 sekund, więc znacznik nie jest prawdziwą liczbą upłyniętych sekund fizycznych — do mierzenia odstępów użyj zegara monotonicznego.
  • Sprawdź, czy system odbiorczy chce sekund czy milisekund. Dziesięć cyfr to sekundy, trzynaście to milisekundy, a podanie jednego zamiast drugiego daje datę w 1970 albo w roku 57 000.
  • Dla dat sprzed 1970 znacznik jest ujemny. To poprawne, ale obsługa bywa różna — część baz i bibliotek odrzuca albo źle przetwarza wartości ujemne.

Częste pytania

Dlaczego moja data wypada o dzień wcześniej albo później?
Niemal zawsze przez założenie strefy przy wartości zawierającej samą datę. Jeśli wpiszesz 2026-03-20, a system odczyta to jako północ UTC, każdy na zachód od Greenwich zobaczy lokalnie dziewiętnastego. Do daty, którą zamierzasz przeliczać, zawsze dołącz jawną godzinę i strefę.
Przechowywać daty czy znaczniki?
Przechowuj moment w UTC zawsze wtedy, gdy zapisywana rzecz wydarzyła się w konkretnej chwili — zdarzenie, wpis w logu, transakcja. Samą datę przechowuj tylko wtedy, gdy strefa naprawdę nie ma znaczenia, jak przy dacie urodzin, gdzie 20 marca znaczy wszędzie to samo.

Przewodnik po konwersji daty na timestamp

Konwersja daty na timestamp uniksowy jest podstawowa operacja w programowaniu, używana do przechowywania dat w bazach danych, logowaniu zdarzeń i synchronizacji czasu pomiędzy systemami. Współczesne aplikacje internetowe często musza przesyłać daty pomiędzy serwerem a przeglądarka, a timestamp uniksowy jest idealnym pośrednim formatem, niezależnym od strefy czasowej.

Praktyczne zastosowania

Timestamp jest niezbędny przy: sortowaniu wydarzeń od najnowszych (większa wartość = późniejszy czas), obliczaniu różnicy czasu pomiędzy dwoma zdarzeniami, cache'owaniu danych z czasem wygaśnięcia, systemach głosowania i ankietach, czy implementacji blokchain gdzie każdy blok ma timestamp potwierdzający czas jego utworzenia.

Dokładność i precyzja

Wybierz format timestamp w zależności od potrzeb: sekundy (1704067200) wystarcza dla większości zastosowań webowych i API, milisekundy (1704067200000) sa standardem w JavaScript i JVM oraz dla precyzyjnego trackowania zdarzeń, nanosekundy (1704067200000000000) sa używane w systemach finansowych gdzie każda milisekunda ma znaczenie.

Zagadnienia i problemy

Zawsze sprawdzaj strefę czasowa przy konwersji - domyślne ustawienia mogą się różnic pomiędzy środowiskami. Systemy Windows i Unix mogą inaczej obsługiwać czas przed epoch (wartości ujemne). Latwojsze jest operowanie na timestamp niż na stringsach dat, ponieważ można wykonywać proste operacje arytmetyczne bez bibliotek.