Unix Timestamp na datę i godzinę – konwerter znacznika czasu epoch

Ostatnia aktualizacja treści:

Wklej Unix timestamp i odczytaj datę z godziną. Znacznik 1700000000 to 14 listopada 2023, 22:13:20 UTC. Konwerter rozpoznaje sekundy, milisekundy, mikrosekundy i nanosekundy po liczbie cyfr, a opcja Czas lokalny pokazuje godzinę w strefie Twojego urządzenia.

Wpisz sekundy, milisekundy, mikrosekundy albo nanosekundy. Jednostka jest rozpoznawana po liczbie cyfr.

UTC
Strefa czasowa

Przy UTC godzina jest podana bez przesunięcia, tak jak zapisują ją logi i bazy danych. Przy czasie lokalnym jest podana w strefie Twojego urządzenia, razem z przesunięciem.

na

Czym jest Unix timestamp, czyli znacznik czasu uniksowego?

Unix timestamp, po polsku znacznik czasu uniksowego albo czas uniksowy, to liczba sekund, które upłynęły od początku 1970 roku według czasu UTC[1]. Punktem zerowym jest północ 1 stycznia 1970 roku, nazywana epoką Uniksa. UTC to uniwersalny czas koordynowany, od którego liczy się strefy czasowe na całym świecie.

Sposób liczenia opisuje norma POSIX, czyli wspólny standard systemów uniksowych. Każda doba ma w niej dokładnie 86 400 sekund[2]. Sekundy przestępne, które dodaje się do UTC, nie mają w tym rachunku osobnych liczb[1].

Sam znacznik nie zawiera informacji o strefie czasowej[3]. Liczba 1700000000 opisuje tę samą chwilę w Warszawie i w Nowym Jorku. Różni się dopiero godzina, którą w tej chwili pokazują zegary w obu miastach.

Pięć zegarów ściennych z podpisami miast: Sídney, Londres, Monterrey, Vancouver i New York
Zegary dla pięciu miast pokazują pięć różnych godzin. Jeden Unix timestamp opisuje tę samą chwilę na wszystkich pięciu tarczach, a różni się tylko godzina odczytana w każdej strefie. Zdjęcie: Luis Cortes, Unsplash.

Jaką datę oznacza Unix timestamp?

Unix timestamp 1700000000 oznacza 14 listopada 2023 roku, godzinę 22:13:20 UTC. W Polsce była wtedy godzina 23:13:20, bo w listopadzie obowiązuje czas środkowoeuropejski, późniejszy od UTC o jedną godzinę[4].

Datę dla dowolnego znacznika odczytasz w konwerterze powyżej. Wklej liczbę w pole Unix Timestamp, a data pojawi się w polu Data i czas już w trakcie wpisywania. Pod wynikiem konwerter podaje, w jakiej jednostce odczytał liczbę.

Jednostkę rozpoznaje po liczbie cyfr. Dzisiejszy znacznik w sekundach ma dziesięć cyfr. Wartość z JavaScriptu ma trzynaście cyfr, bo funkcja Date.now() zwraca milisekundy[5]. Dziewiętnaście cyfr ma wynik funkcji time.time_ns() w Pythonie, która liczy nanosekundy[6].

Godzinę w strefie Twojego urządzenia pokaże opcja Czas lokalny w przełączniku Strefa czasowa. Do wyniku zostanie wtedy dopisane przesunięcie strefy. W Polsce zimą jest to +01:00, a latem +02:00.

Znacznik dla wybranej daty i godziny policzysz w konwerterze daty na Unix timestamp.

Jak zamienić Unix timestamp na datę? Wzór i przykład

W czasie uniksowym każda doba ma dokładnie 86 400 sekund[2]. Żeby zamienić znacznik na datę, dzielisz go przez 86 400. Część całkowita wyniku to liczba pełnych dób od 1 stycznia 1970 roku. Reszta z dzielenia to godzina tego dnia zapisana w sekundach.

Weźmy znacznik 1700000000. Po podzieleniu przez 86 400 wychodzi 19 675 pełnych dób. Reszta wynosi 80 000 sekund.

Doba o numerze 19 675, jeśli 1 stycznia 1970 roku liczymy jako dobę zerową, to 14 listopada 2023 roku. Reszta to godzina tego dnia: 80 000 sekund to 22 godziny, 13 minut i 20 sekund. Pełny wynik brzmi więc 2023-11-14 22:13:20 UTC.

Znacznik w milisekundach dzielisz najpierw przez 1000, w mikrosekundach przez milion, a w nanosekundach przez miliard. Konwerter powyżej wykonuje to dzielenie sam, zanim policzy datę. Przeliczenie w drugą stronę, z daty na liczbę sekund, wykonuje konwerter daty na Unix timestamp.

Znacznik zapisany szesnastkowo, na przykład 6553F100, zamień najpierw na liczbę dziesiętną. Zrobisz to w konwerterze liczb dziesiętnych na szesnastkowe po kliknięciu przycisku Zmień kolejność. Wartość 6553F100 to dziesiętnie 1700000000.

Jakie daty oznaczają okrągłe znaczniki uniksowe?

Zebraliśmy znaczniki okrągłe i graniczne: epokę, doby wokół niej, kolejne setki milionów sekund, znacznik z cyframi od 1 do 0 oraz granice 32-bitowej liczby całkowitej. Wszystkie daty są podane w UTC, tak jak pokazuje je konwerter przy opcji UTC.
ZnacznikData i godzina UTCCo oznacza ta wartość
-21474836481901-12-13 20:45:52Najmniejsza 32-bitowa liczba całkowita ze znakiem
-864001969-12-31 00:00:00Doba przed epoką
-11969-12-31 23:59:59Ostatnia sekunda przed epoką
01970-01-01 00:00:00Epoka Uniksa
864001970-01-02 00:00:00Koniec pierwszej doby
10000000002001-09-09 01:46:40Miliard sekund
12345678902009-02-13 23:31:30Cyfry od 1 do 0 po kolei
15000000002017-07-14 02:40:00Półtora miliarda sekund
16000000002020-09-13 12:26:401,6 miliarda sekund
17000000002023-11-14 22:13:201,7 miliarda sekund
17356896002025-01-01 00:00:00Początek 2025 roku
17672256002026-01-01 00:00:00Początek 2026 roku
18000000002027-01-15 08:00:001,8 miliarda sekund
20000000002033-05-18 03:33:20Dwa miliardy sekund
21474836472038-01-19 03:14:07Największa 32-bitowa liczba całkowita ze znakiem
41024448002100-01-01 00:00:00Początek 2100 roku
42949672952106-02-07 06:28:15Największa 32-bitowa liczba całkowita bez znaku
Znacznik 1234567890, z cyframi od 1 do 0 po kolei, to 13 lutego 2009 roku, godzina 23:31:30 UTC[7]. W Polsce był to już 14 lutego. Licznik zapisany jako 32-bitowa liczba ze znakiem po wartości 2147483647 przepełnia się. Jego wartość zmienia się wtedy na -2147483648, czyli 13 grudnia 1901 roku[8]. W zapisie dwójkowym 2147483647 to 31 jedynek. Taki zapis pokaże konwerter liczb dziesiętnych na dwójkowe.

Po czym poznać, czy znacznik jest w sekundach, milisekundach czy nanosekundach?

Jednostkę rozpoznasz po liczbie cyfr. Dziesięć cyfr w sekundach ma każdy znacznik od 9 września 2001 roku do 20 listopada 2286 roku. Dla dzisiejszych dat długość zapisu w każdej jednostce jest więc stała.
JednostkaLiczba cyfr dziśChwila 1700000000 w tej jednostceGdzie ją spotkasz
Sekundy101700000000time() w PHP, pole exp w tokenie JWT, znacznik na Discordzie
Milisekundy131700000000000Date.now() w JavaScripcie, EPOCHTODATE z jednostką 2
Mikrosekundy161700000000000000EPOCHTODATE z jednostką 3
Nanosekundy191700000000000000000time.time_ns() w Pythonie
Funkcja time() w PHP zwraca liczbę sekund od epoki[3]. Pola exp, nbf i iat w tokenie JWT zawierają liczbę sekund, która może mieć część ułamkową[9]. Discord przyjmuje znacznik w sekundach[10]. Date.now() zwraca milisekundy[5], a time.time_ns() w Pythonie nanosekundy[6]. Funkcja EPOCHTODATE w Arkuszach Google przyjmuje jednostkę 1 dla sekund, 2 dla milisekund i 3 dla mikrosekund[11].

Jaką formułą albo poleceniem zamienić Unix timestamp na datę?

Każdy wiersz zamienia znacznik 1700000000 na 14 listopada 2023 roku, godzinę 22:13:20 UTC. Wyniki polecenia date, Pythona i JavaScriptu sprawdziliśmy na tym znaczniku.
GdzieFormuła albo polecenieWynik dla 1700000000
Excel=A1/86400+DATA(1970;1;1)2023-11-14 22:13:20 po nadaniu komórce formatu daty i godziny
Excel, znacznik w milisekundach=A1/86400000+DATA(1970;1;1)Ta sama data dla wartości 1700000000000
Arkusze Google=EPOCHTODATE(A1)Data i godzina w UTC
Arkusze Google, milisekundy=EPOCHTODATE(A1; 2)Data i godzina w UTC dla wartości 1700000000000
MySQLSELECT FROM_UNIXTIME(1700000000);2023-11-14 22:13:20, gdy sesja ma strefę UTC
PostgreSQLSELECT to_timestamp(1700000000);2023-11-14 22:13:20+00, gdy sesja ma strefę UTC
Pythondatetime.fromtimestamp(1700000000, tz=timezone.utc)2023-11-14 22:13:20+00:00
JavaScriptnew Date(1700000000 * 1000).toISOString()2023-11-14T22:13:20.000Z
Linux, polecenie datedate -u -d @1700000000Tue Nov 14 22:13:20 UTC 2023
PowerShell 7.1 i nowszyGet-Date -UnixTimeSeconds 1700000000 -AsUTCData i godzina w UTC w formacie ustawień regionalnych
MySQL podaje wynik FROM_UNIXTIME w strefie sesji, czyli w strefie ustawionej dla bieżącego połączenia[12]. PostgreSQL zamienia znacznik funkcją to_timestamp na typ timestamp with time zone[13]. PostgreSQL wyświetla wartość tego typu w strefie ustawionej w parametrze timezone[14]. W Pythonie wiersz wymaga importu from datetime import datetime, timezone. Metoda utcfromtimestamp jest wycofana od wersji 3.12, a dokumentacja zaleca fromtimestamp ze strefą UTC[15]. Polecenie date przyjmuje znacznik poprzedzony znakiem @[16]. Parametry -UnixTimeSeconds i -AsUTC ma Get-Date od PowerShella 7.1[17].

Jak ustawić formułę w Excelu i Arkuszach Google, żeby pokazała datę?

Przy jednym znaczniku szybsze jest pole powyżej. Kolumnę znaczników wyeksportowaną z bazy danych arkusz zamieni jedną formułą przeciągniętą w dół.

  1. Excel: formuła z funkcją DATA

    Wpisz znacznik w komórkę A1, a w komórkę B1 formułę =A1/86400+DATA(1970;1;1). W polskim Excelu funkcja DATA ma argumenty rok, miesiąc i dzień[18]. Formuła dzieli sekundy przez liczbę sekund w dobie i dodaje wynik do daty 1 stycznia 1970 roku.
  2. Excel: format daty i godziny w komórce

    Excel przechowuje daty jako kolejne liczby, w których 1 stycznia 1900 roku ma numer 1[18]. Komórka B1 pokaże więc najpierw liczbę dni z ułamkiem, około 45244,93. Nadaj jej format daty z godziną, a zobaczysz 2023-11-14 22:13:20.
  3. Excel: skoroszyt w systemie dat 1904

    Excel może liczyć daty od 1 stycznia 1904 roku, a oba systemy dat różnią się o 1462 dni[19]. W systemie 1900 dzień 1 stycznia 1970 roku ma numer 25569. W systemie 1904 ten sam dzień ma numer 24107. Funkcja DATA zwraca numer dnia w systemie dat danego skoroszytu, więc formuła daje poprawną datę w obu systemach.
  4. Arkusze Google: funkcja EPOCHTODATE

    W Arkuszach Google wystarczy formuła =EPOCHTODATE(A1). Znacznik w milisekundach wymaga drugiego argumentu 2, a w mikrosekundach argumentu 3. Wynik jest podany w UTC niezależnie od strefy czasowej ustawionej w arkuszu[11].
  5. Godzina polska w arkuszu

    Obie formuły dają czas UTC. Żeby otrzymać godzinę polską zimą, dodaj do wyniku 1/24, czyli jedną godzinę. Latem dodajesz 2/24, bo czas letni środkowoeuropejski jest późniejszy od UTC o dwie godziny[4].

Dlaczego godzina z konwertera różni się od godziny w Polsce?

Konwerter domyślnie pokazuje czas UTC, bo w tej skali liczony jest sam znacznik[1]. Polski czas urzędowy to zimą czas środkowoeuropejski, późniejszy od UTC o godzinę, a latem czas letni środkowoeuropejski, późniejszy od UTC o dwie godziny[4].

Znacznik 1700000000 daje więc godzinę 22:13:20 w UTC i 23:13:20 w Polsce. Latem różnica wynosi dwie godziny. Znacznik 1782864000 oznacza 1 lipca 2026 roku o północy UTC, a w Polsce godzinę 2:00.

Tak samo działają bazy danych. MySQL pokazuje wynik funkcji FROM_UNIXTIME w strefie sesji[12]. Ten sam znacznik odczytany przy strefie sesji UTC i przy strefie Europe/Warsaw daje więc dwie różne godziny.

Godzinę polską bez liczenia przesunięcia pokaże opcja Czas lokalny w przełączniku Strefa czasowa, jeśli Twoje urządzenie ma ustawioną polską strefę. Znacznik dla konkretnej godziny polskiej policzysz w konwerterze daty na Unix timestamp.

Cyfrowy zegar na biurku obok klawiatury, wyświetlający godzinę 10:03
Zegar na biurku pokazuje czas lokalny. Konwerter domyślnie pokazuje UTC, a taką godzinę jak na tym zegarze zobaczysz po wybraniu opcji Czas lokalny. Zdjęcie: Andrei Anufrienko, Unsplash.

Źródła

  1. Czas uniksowy — Wikipedia
  2. The Open Group Base Specifications Issue 8 (POSIX.1-2024), 4.19 Seconds Since the Epoch — The Open Group
  3. time — PHP Manual — The PHP Group
  4. Informacja dotycząca czasu urzędowego — Główny Urząd Miar
  5. Date.now() — MDN Web Docs
  6. time — Time access and conversions — Python Software Foundation
  7. Unixzeit — Wikipedia (niemiecka)
  8. Year 2038 problem — Wikipedia (angielska)
  9. RFC 7519: JSON Web Token (JWT) — IETF
  10. Reference — Message Formatting — Discord Developer Documentation
  11. EPOCHTODATE — Pomoc Edytorów Dokumentów Google
  12. MySQL 8.4 Reference Manual, Date and Time Functions — Oracle
  13. PostgreSQL Documentation, Date/Time Functions and Operators — PostgreSQL Global Development Group
  14. PostgreSQL Documentation, Date/Time Types — PostgreSQL Global Development Group
  15. datetime — Basic date and time types — Python Software Foundation
  16. GNU Coreutils, Seconds since the Epoch — Free Software Foundation
  17. Get-Date (Microsoft.PowerShell.Utility) — Microsoft Learn
  18. DATA (funkcja) — Microsoft
  19. Systemy dat w programie Excel — Microsoft

Wszystkie wartości w tabelach wyliczyliśmy z definicji jednostek i sprawdziliśmy rachunkowo przed publikacją. Dane historyczne i nazwy lokalnych jednostek opieramy na źródłach wymienionych wyżej.

Ostatnia aktualizacja treści: · przygotował i sprawdził zespół Arteon

Najczęstsze pytania o Unix timestamp

Jaki jest teraz aktualny Unix timestamp?

Aktualny znacznik rośnie o jeden co sekundę. We wrześniu 2026 roku mieści się między 1788220800 a 1790812799. Dokładną wartość zwraca w konsoli przeglądarki wyrażenie Math.floor(Date.now() / 1000), bo Date.now() zwraca milisekundy[5].

Co oznacza pole exp w tokenie JWT?

Pole exp podaje chwilę, od której token nie może być przyjęty. Jego wartość to liczba sekund od 1 stycznia 1970 roku UTC, liczona z pominięciem sekund przestępnych[9]. Wklej ją w pole konwertera, a zobaczysz datę i godzinę wygaśnięcia tokena. Tak samo zapisane są pole iat, czyli chwila wystawienia tokena, oraz pole nbf, czyli chwila, przed którą token nie może być przyjęty[9].

Co to jest problem roku 2038?

Największą wartość znacznik zapisany jako 32-bitowa liczba ze znakiem osiąga 19 stycznia 2038 roku o 03:14:07 UTC[1]. Sekundę później licznik przepełnia się i pokazuje 13 grudnia 1901 roku[8]. Jądro Linuksa od wersji 5.6 z 2020 roku obsługuje 64-bitowy zapis czasu także na architekturach 32-bitowych[8].

Czy Unix timestamp może być ujemny?

Tak. Wartości ujemne oznaczają chwile przed 1 stycznia 1970 roku[13]. Znacznik -86400 to 31 grudnia 1969 roku, godzina 00:00:00 UTC. Konwerter przyjmuje minus wpisany przed liczbą.

Jak czas uniksowy traktuje sekundy przestępne?

Każda doba ma w nim dokładnie 86 400 sekund[2], więc sekunda przestępna nie ma własnej liczby. Dokumentacja GNU podaje przykład z końca 2016 roku. Znacznik 1483228799 to 31 grudnia, godzina 23:59:59 UTC, a znacznik 1483228800 to już północ 1 stycznia 2017 roku. Sekundy 23:59:60 nie da się zapisać znacznikiem[16].

Jak pokazać Unix timestamp w wiadomości na Discordzie?

Wpisz w wiadomości <t:1700000000>. Discord pokaże tę chwilę w strefie czasowej i formacie każdego czytelnika. Styl dopisujesz po drugim dwukropku: <t:1700000000:R> daje czas względny, a <t:1700000000:F> pełną datę z dniem tygodnia[10].

Dlaczego Python wycofał metodę utcfromtimestamp?

Metoda datetime.utcfromtimestamp() jest wycofana od Pythona 3.12. Zwraca obiekt bez strefy czasowej, a wiele metod modułu datetime traktuje taki obiekt jak czas lokalny. Dokumentacja zaleca w jej miejsce datetime.fromtimestamp(znacznik, tz=timezone.utc)[15].

Czy pole przyjmuje przecinek, spacje i wartości w milisekundach?

Tak. Pole przyjmuje ułamek sekundy z kropką albo przecinkiem, na przykład 1700000000,5. Cyfry możesz rozdzielić spacją, podkreślnikiem albo apostrofem co trzy cyfry, tak jak w zapisie 1 700 000 000. Pole przyjmuje też przecinki albo kropki co trzy cyfry, jak w zapisie angielskim „1,700,000,000” i niemieckim „1.700.000.000”. Milisekundy, mikrosekundy i nanosekundy konwerter rozpoznaje sam po liczbie cyfr.

Jak zamienić datę z powrotem na Unix timestamp?

Kliknij przycisk Zmień kolejność. Otworzy się konwerter daty na Unix timestamp, a wynik z pola Data i czas zostanie wpisany w jego pole. Datę wpisujesz tam w zapisie 2023-11-14 22:13:20 albo 14.11.2023 22:13.

Zrzut ekranu darmowego narzędzia Arteon: Unix Timestamp na datę i godzinę – konwerter znacznika czasu epoch

Pomóż nam ulepszyć narzędzia

Masz pomysł na nową funkcję, widzisz błąd lub chcesz zaproponować inne narzędzie? Napisz do nas.