Jak korzystać z narzędzia
- 1Aktualny czas Unix odlicza się na górze narzędzia. Kliknij „Kopiuj”, aby skopiować go w sekundach lub milisekundach.
- 2Wklej znacznik czasu w sekcji „Znacznik czasu na datę”. Jednostka jest rozpoznawana po liczbie cyfr; jeśli rozpoznanie jest błędne, sam wybierz sekundy, milisekundy, mikrosekundy lub nanosekundy.
- 3Możesz też wkleić datę, np.
2024-05-01T12:00:00ZlubWed, 01 May 2024 12:00:00 GMT, aby zobaczyć ją w każdym formacie i jako znacznik czasu. - 4Aby przeliczyć w drugą stronę, wybierz datę i godzinę w sekcji „Data na znacznik czasu”, zdecyduj, czy chodzi o czas lokalny, czy UTC, i skopiuj wynik.
Czym jest czas Unix?
Czas Unix – nazywany też czasem epoch lub znacznikiem czasu POSIX – liczy sekundy od 00:00:00 UTC 1 stycznia 1970 roku, czyli od epoki Unix. Licznik przekroczył 1 700 000 000 14 listopada 2023 roku o 22:13:20 UTC. Momenty sprzed 1970 roku to liczby ujemne.
Znacznik czasu to pojedyncza liczba, niezależna od stref czasowych, kalendarzy i formatów dat, więc łatwo go przechowywać, sortować i porównywać. Dlatego bazy danych, API, pliki logów, systemy plików i JSON Web Tokeny używają go wszędzie.
Sekundy, milisekundy, mikrosekundy czy nanosekundy?
Klasyczny czas Unix liczy sekundy, a dzisiejsze wartości mają 10 cyfr. Date.now() w JavaScripcie i System.currentTimeMillis() w Javie zwracają milisekundy (13 cyfr), niektóre bazy danych przechowują mikrosekundy (16 cyfr), a UnixNano() w Go i time.time_ns() w Pythonie zwracają nanosekundy (19 cyfr).
Konwerter zgaduje jednostkę na podstawie długości liczby: do 11 cyfr przyjmuje sekundy, przy 12–14 cyfrach – milisekundy, przy 15–17 – mikrosekundy, a przy 18 i więcej – nanosekundy. Niejednoznaczne są tylko bardzo małe wartości w milisekundach, sprzed marca 1973 roku – dla nich wybierz jednostkę samodzielnie.
Strefy czasowe, rok 2038 i sekundy przestępne
Znacznik czasu oznacza ten sam moment wszędzie na Ziemi; od strefy czasowej zależy tylko jego wyświetlanie. 1 700 000 000 to 22:13:20 w Londynie, 23:13:20 w Warszawie i 17:13:20 w Nowym Jorku. Przechowuj i przesyłaj czas w UTC, a na czas lokalny zamieniaj go dopiero przy wyświetlaniu.
Systemy, które przechowują czas Unix w 32-bitowej liczbie całkowitej ze znakiem, wyczerpią zakres o 03:14:07 UTC 19 stycznia 2038 roku, gdy licznik się przepełni i przeskoczy do 1901 roku – to tzw. problem roku 2038. Obecne systemy używają 64 bitów, które wystarczą na miliardy lat.
Czas Unix ignoruje sekundy przestępne: każda doba liczy dokładnie 86 400 sekund. Gdy do UTC dodawana jest sekunda przestępna, zegar Unix powtarza sekundę lub ją rozkłada, więc różnica między dwoma znacznikami czasu może być krótsza o sekundy przestępne, które wystąpiły w międzyczasie – od 1972 roku było ich 27.
Pytania i odpowiedzi
Jak uzyskać aktualny znacznik czasu Unix?
Jest wyświetlany na górze tej strony. W kodzie użyj Math.floor(Date.now() / 1000) w JavaScripcie, time.time() w Pythonie, time() w PHP, DateTimeOffset.UtcNow.ToUnixTimeSeconds() w C# lub date +%s w terminalu Linuksa lub macOS.
Czy znacznik czasu Unix jest w sekundach, czy w milisekundach?
Tradycyjnie w sekundach, ale wiele platform, w tym JavaScript i Java, używa milisekund. Policz cyfry: aktualny znacznik czasu ma 10 cyfr w sekundach i 13 w milisekundach. Ten konwerter rozpoznaje jednostkę i informuje, którą przyjął.
Czy czas Unix zależy od strefy czasowej?
Nie. Zawsze liczy się go od północy UTC 1 stycznia 1970 roku, więc w tym samym momencie wszędzie jest to ta sama liczba. Strefa czasowa ma znaczenie dopiero przy zamianie liczby na datę kalendarzową i godzinę.
Co stanie się z czasem Unix w 2038 roku?
19 stycznia 2038 roku o 03:14:07 UTC czas Unix przekroczy 2 147 483 647 – największą wartość, jaką może przechować 32-bitowa liczba całkowita ze znakiem. Oprogramowanie, które nadal przechowuje czas w 32 bitach, przeskoczy do grudnia 1901 roku. Nowoczesne systemy operacyjne, bazy danych i języki używają czasu 64-bitowego i problem ich nie dotyczy.
Jak przeliczyć znacznik czasu Unix w Excelu lub Arkuszach Google?
Dla sekund użyj =A1/86400+DATE(1970,1,1) – w polskiej wersji Excela =A1/86400+DATA(1970;1;1) – i sformatuj komórkę jako datę i godzinę; dla milisekund dziel zamiast tego przez 86 400 000. Wynik jest w UTC, więc dodaj lub odejmij swoje przesunięcie względem UTC w godzinach podzielone przez 24.