Kategoria: Programistyczne

Konwerter czasu Unix

Zamieniaj znaczniki czasu Unix na daty i odwrotnie.

Działa w przeglądarcePrzetwarzanie lokalne. Dane wejściowe nie opuszczają Twojego urządzenia.

Szczegóły

O tym narzędziu

Zamienia znacznik czasu uniksowego na czytelną datę w UTC i w Twojej strefie czasowej, a datę z powrotem na znacznik. Sekundy i milisekundy są przyjmowane i rozpoznawane automatycznie.

Znacznik czasu uniksowego to liczba sekund od północy UTC 1 stycznia 1970 roku, czyli od tak zwanej epoki. W tym formacie czas przechowują logi, bazy danych, API i tokeny JWT - z jednego dobrego powodu: to pojedyncza liczba bez strefy czasowej, bez czasu letniego i bez wątpliwości, czy 03/04 znaczy marzec, czy kwiecień. Ceną jest to, że żaden człowiek tego nie przeczyta, i po to jest ta strona.

Jednostkę zdradza długość liczby. Dziesięć cyfr to sekundy i wypada gdzieś dzisiaj; trzynaście to milisekundy, czyli to, co zwraca Date.now() w JavaScripcie i większość API na JVM; szesnaście to mikrosekundy, częste w Pythonie i PostgreSQL. Podanie wartości w milisekundach tam, gdzie spodziewane są sekundy, to klasyczny błąd - przenosi datę mniej więcej do roku 56000 - dlatego narzędzie czyta długość, zamiast kazać Ci ją deklarować.

Dwie pokazane daty to ta sama chwila zapisana dwa razy. UTC to, co zapisał system; czas lokalny to, co ta chwila znaczy tam, gdzie jesteś, razem z czasem letnim. Kiedy dopasowujesz linijkę logu do zgłoszenia od klienta, ta różnica jest całym pytaniem. Znaczniki sprzed 1970 roku są ujemne, co jest poprawne i obsługiwane, a wszystko liczy się w przeglądarce, więc produkcyjna linijka logu zostaje na Twoim komputerze.

Wypróbuj też

  • Podejrzyj nagłówek i dane tokenu JSON Web Token.

    Działa w przeglądarceProgramistyczne
  • Generuj kryptograficznie losowe identyfikatory UUID w wersji 4.

    Działa w przeglądarceProgramistyczne

Warto wiedzieć

Najczęstsze pytania

Sekundy czy milisekundy?
Jedno i drugie, rozpoznawane po długości. Dziesięć cyfr to sekundy, trzynaście milisekundy, szesnaście mikrosekundy. Jeśli nie wiesz, co wyprodukował dany system, wklej wartość i sprawdź, czy wynikowa data wypada gdzieś w okolicach dzisiaj.
Czym jest epoka uniksowa?
Północą UTC 1 stycznia 1970 roku, czyli punktem zerowym, który wybrał Unix i który odziedziczyło praktycznie wszystko po nim. Znacznik czasu to po prostu liczba sekund, które od tamtej chwili minęły - i dlatego format nie potrzebuje doklejonej strefy czasowej, żeby być jednoznaczny.
Na czym polega problem roku 2038?
Znacznik zapisany w 32-bitowej liczbie ze znakiem kończy się 19 stycznia 2038 roku i przewija do roku 1901. Współczesne systemy używają 64 bitów i wystarczy im na dłużej, niż pożyje Słońce, ale urządzenia wbudowane, stare formaty plików i niezmigrowane kolumny w bazach nadal istnieją. Wszystko, co trzyma czas w czterech bajtach, warto sprawdzić.
Dlaczego czas lokalny różni się od tego w logu?
Bo znacznik nie ma strefy czasowej: to jedna chwila, a UTC i Twój zegar to dwa sposoby jej zapisania. Większość serwerów loguje w UTC, więc różnica o pełną liczbę godzin - i o tę niewygodną jedną, gdy w grę wchodzi czas letni - jest oczekiwana, a nie błędna.