Wszystkie poradniki

Zamiana znacznika czasu Unix na datę i daty na znacznik czasu

Opublikowano · Zaktualizowano 3 min czytania

Znacznik czasu Unix to liczba odliczająca czas, który upłynął od 1 stycznia 1970 o północy, w czasie uniwersalnym. Spotyka się go w bazach danych, dziennikach programów i interfejsach stron. Dwa pytania decydują o uzyskanej dacie: jednostka liczby i strefa czasowa, w której odczytuje się wynik.

Wartość wzorcowa

Konwertuj znacznik czasu Unix podaje trzy odczyty tego samego momentu. Dla 1700000000, przy przeglądarce ustawionej na czas paryski:

OdczytWynik
Data UTCTue, 14 Nov 2023 22:13:20 GMT
Data lokalna14 listopada 2023 o 23:13:20 UTC+1
ISO2023-11-14T22:13:20.000Z

Czas lokalny podąża za strefą czasową przeglądarki: zimą w Paryżu jest godzinę więcej. Ten sam znacznik czasu to jeden moment, odczytany w dwóch strefach czasowych.

Jednostkę rozpoznaje się po liczbie cyfr

Ustawienie domyślne rozpoznaje jednostkę po długości liczby. Trzy poniższe wartości oznaczają ten sam moment, z dokładnością do precyzji.

LiczbaCyfryRozpoznana jednostkaUzyskany moment
170000000010Sekundy14 lis 2023, 22:13:20 UTC
170000000000013Milisekundy14 lis 2023, 22:13:20 UTC
170000000012345616Mikrosekundy14 lis 2023, 22:13:20.123 UTC

Reguła: do 11 cyfr sekundy; od 12 do 14 milisekundy; 15 i 16 mikrosekundy. Ustawienie „milisekundy” wymusza tę jednostkę.

Pułapka reguły

Ponieważ jednostkę wnioskuje się z długości, wartość niejednoznaczna jest odczytywana tylko w jeden sposób: 10000000000 (11 cyfr) daje 20 listopada 2286, a 100000000000 (12 cyfr) 3 marca 1973. Znacznik czasu w milisekundach sprzed marca 1973 ma 11 cyfr lub mniej i zostałby odczytany jako sekundy: należy wtedy wymusić ustawienie „milisekundy”.

Wartości sprzed 1970 i granica roku 2038

Liczba ujemna oznacza moment sprzed 1970: −1 daje 31 grudnia 1969 o 23:59:59 UTC, a 0 daje 1 stycznia 1970 o północy.

Liczba 2147483647 jest największą, jaką może pomieścić 32-bitowa liczba całkowita ze znakiem: daje 19 stycznia 2038 o 03:14:07 UTC. Następna liczba, 2147483648, daje 03:14:08. Narzędzie działa dalej bez limitu, ale system przechowujący czas na 32 bitach nie może: to „błąd roku 2038”.

Zamiana daty na znacznik czasu

Wpisz datę zamiast liczby: narzędzie poda znacznik czasu w sekundach i w milisekundach.

Dane wejścioweZnacznik czasu w sekundachOdczyt
2026-01-011767225600Północ w czasie uniwersalnym, bez podanej strefy czasowej
2026-01-01T10:30:00+01:00176725980010:30 w Paryżu, czyli 09:30 w czasie uniwersalnym
2024-02-291709164800Rok przestępny zaakceptowany

Data bez strefy czasowej jest odczytywana w czasie uniwersalnym, a nie lokalnym: narzędzie przypomina o tym w wyniku. Data, która nie istnieje, jak 30 lutego 2026, jest odrzucana z komunikatem.

Częste błędy

  • Odczytanie milisekund jako sekund: data ląduje tysiące lat za daleko.
  • Zapomnienie o strefie czasowej: data odczytana jako lokalna, a następnie wysłana jako uniwersalna, przesuwa się o godzinę lub więcej.
  • Zapisanie daty bez strefy czasowej w myśl o czasie lokalnym, gdy zostanie odczytana w czasie uniwersalnym.

Aby policzyć dni między dwiema datami, zobacz Liczenie dni między dwiema datami.

Dla jakich przypadków

Dziennik programu, baza danych, odpowiedź usługi internetowej lub wyeksportowany plik: liczbę trudno odczytać, datę odczytuje się od razu.

Sprawdzenie konwersji

  1. Przeczytaj ponownie wiersz UTC, który nie zależy od urządzenia.
  2. Sprawdź jednostkę podaną w pierwszym wierszu wyniku.
  3. Skonwertuj uzyskaną datę z powrotem: powinna wrócić liczba wyjściowa.

Konwertuj znacznik czasu Unix

Najczęściej zadawane pytania

Czym jest znacznik czasu Unix?
Liczbą sekund, które upłynęły od 1 stycznia 1970 o północy, w czasie uniwersalnym.
Jak poznać, czy liczba jest w sekundach, czy w milisekundach?
Narzędzie wnioskuje to z liczby cyfr: do 11 cyfr sekundy; od 12 do 14 milisekundy; 15 i 16 mikrosekundy.
Co się stanie w 2038?
Liczba 2147483647, największa 32-bitowa liczba całkowita ze znakiem, odpowiada 19 stycznia 2038. System przechowujący czas na 32 bitach nie może pójść dalej.
Jakiej strefy czasowej używa się dla daty bez strefy?
Czasu uniwersalnego, a nie lokalnego. Narzędzie przypomina o tym w wyniku.