Kalkulator znaczników czasowych
Konwertuj znaczniki czasowe Unix (sekundy lub milisekundy od Epoki Unix) na czytelne ciągi daty i czasu oraz konwertuj daty z powrotem na znaczniki czasowe Unix. Obsługuje strefy czasowe UTC i lokalne.
Czas Unix zaczął być liczony od 1 stycznia 1970 roku 00:00:00 UTC - Epoki Unix. Każdy znacznik czasowy Unix to liczba sekund (lub milisekund w wielu nowoczesnych systemach), które upłynęły od tego momentu. Znaczniki czasowe są używane w programowaniu, bazach danych i API, ponieważ są niezależne od strefy czasowej, sortowalne jako liczby całkowite i łatwe do porównania arytmetycznie. Odczytanie 1711843200 jako surowej liczby nic nie mówi. Ten kalkulator przetłumaczy to na 2024-03-31T00:00:00.000Z natychmiast, używając ISO 8601 - międzynarodowego standardu daty. Wszystkie konwersje odbywają się lokalnie w Twojej przeglądarce.
Jak korzystać z tego narzędzia
- Znacznik czasowy na datę: Wprowadź znacznik czasowy Unix w sekundach lub milisekundach - narzędzie pokaże datę w UTC i Twojej lokalnej strefie czasowej.
- Data na znacznik czasowy: Wprowadź datę i godzinę za pomocą selektora daty, a następnie skopiuj wynikowy znacznik czasowy Unix w sekundach i milisekundach.
- Kliknij Teraz, aby wypełnić bieżący znacznik czasowy dla odniesienia.
- Użyj selektora formatu, aby wyświetlić daty w formacie ISO 8601, RFC 2822 lub czytelnym dla ludzi.
Zrozumienie znaczników czasowych Unix
Sekundy vs Milisekundy
Istnieją dwie powszechnie stosowane konwencje. Czas Unix w sekundach (10 cyfr w 2024 roku, np. 1711843200) jest używany przez interfejsy API POSIX, funkcję C/C++ time(), time.time() w Pythonie oraz większość systemów po stronie serwera. Czas Unix w milisekundach (13 cyfr, np. 1711843200000) jest używany przez Date.now() w JavaScript, System.currentTimeMillis() w Javie oraz wiele interfejsów API webowych. Szybka zasada: 10 cyfr oznacza sekundy; 13 cyfr oznacza milisekundy. Największy ważny znacznik czasowy 32-bitowy ze znakiem to 2147483647 (sekundy), odpowiadający 19 stycznia 2038 roku - problem roku 2038 dla systemów starszej generacji.
Format ISO 8601
ISO 8601 to międzynarodowy standard reprezentacji daty i czasu. Pełny format UTC to YYYY-MM-DDTHH:mm:ss.sssZ, gdzie T oddziela datę i czas, a Z oznacza UTC (czas Zulu). ISO 8601 jest zalecanym formatem dla odpowiedzi API i wymiany danych, ponieważ jest jednoznaczny, sortowalny leksykograficznie (kolejność ciągów odpowiada kolejności chronologicznej) i możliwy do przetworzenia w każdym głównym języku programowania.
Przykład
Znacznik czasowy na datę
Wejście (sekundy): 1711843200
Data UTC (ISO 8601): 2024-03-31T00:00:00.000Z
RFC 2822: Nie, 31 Mar 2024 00:00:00 +0000
Czytelny dla ludzi (UTC): Niedziela, 31 marca 2024 roku o 12:00:00 AM UTC
Data na znacznik czasowy
Wejście: 2024-03-31 00:00:00 UTC
Unix (sekundy): 1711843200
Unix (milisekundy): 1711843200000
Typowe formaty znaczników czasowych
- Sekundy Unix (POSIX):
1711843200- 10 cyfr, używane w C, Pythonie, Go, większości interfejsów API systemowych - Milisekundy Unix:
1711843200000- 13 cyfr, używane w JavaScript, Javie, wielu interfejsach API REST - ISO 8601 UTC:
2024-03-31T00:00:00Z- zalecane dla odpowiedzi API i przechowywania danych - ISO 8601 z przesunięciem:
2024-03-31T03:00:00+03:00- zawiera przesunięcie strefy czasowej dla jednoznacznego czasu lokalnego - RFC 2822:
Nie, 31 Mar 2024 00:00:00 +0000- używane w nagłówkach e-maili i nagłówkuDateHTTP - Odnośnik do Epoki Unix:
0=1970-01-01T00:00:00Z
Najlepsze praktyki
- Przechowuj znaczniki czasowe w UTC w bazach danych - konwertuj na czas lokalny tylko na warstwie wyświetlania
- Używaj ISO 8601 dla odpowiedzi API - jest jednoznaczny i możliwy do przetworzenia we wszystkich językach
- Preferuj milisekundy nad sekundami w nowych systemach, aby uniknąć arytmetyki zmiennoprzecinkowej z precyzją subsekundową
- Migruj przechowywanie znaczników czasowych 32-bitowych do 64-bitowych, aby uniknąć problemu przepełnienia roku 2038
Dla unikalnych identyfikatorów z osadzonymi znacznikami czasowymi, UUID v7 (RFC 9562) łączy znaczniki czasowe Unix w milisekundach z losowymi bitami dla sortowalnych, unikalnych identyfikatorów - użyj Generatora UUID dla UUID v4, gdy kolejność sortowania nie jest wymagana. Do debugowania odpowiedzi JSON zawierających znaczniki czasowe, Formatter JSON sprawia, że zagnieżdżone pola znaczników czasowych są czytelne.
Najczęściej Zadawane Pytania
Czym jest znacznik czasowy Unix?
Znacznik czasowy Unix to liczba sekund, które upłynęły od Epoki Unix - północ (00:00:00 UTC) 1 stycznia 1970 roku - z wyłączeniem sekund przestępnych. Jest niezależny od strefy czasowej, to prosta liczba całkowita, łatwa do porównania i sortowania. Znaczniki czasowe Unix są uniwersalną wewnętrzną reprezentacją czasu w systemach operacyjnych, bazach danych i językach programowania.
Jak rozpoznać, czy znacznik czasowy jest w sekundach czy milisekundach?
Policz cyfry. W 2024 roku znaczniki czasowe Unix w sekundach mają 10 cyfr (np. 1700000000). Znaczniki czasowe w milisekundach mają 13 cyfr (np. 1700000000000). Jeśli liczba jest mniejsza niż około 10 miliardów, prawdopodobnie jest to sekunda. Znaczniki czasowe o precyzji nanosekundowej (używane w niektórych systemach o wysokiej częstotliwości) mają 19 cyfr.
Czym jest problem roku 2038?
Systemy przechowujące znaczniki czasowe Unix jako 32-bitowe liczby całkowite ze znakiem mogą reprezentować wartości tylko do 2,147,483,647. Ta maksymalna wartość odpowiada 19 stycznia 2038 roku o 03:14:07 UTC. Dodanie jednej sekundy po tym czasie powoduje przepełnienie liczby całkowitej do dużej liczby ujemnej, co psuje obliczenia dat. Nowoczesne systemy 64-bitowe są bezpieczne przez około 292 miliardy lat.
Czy kalkulator używa mojej lokalnej strefy czasowej?
Tak. Narzędzie wyświetla zarówno czas UTC, jak i Twój lokalny czas. Czas lokalny jest określany przez ustawienie strefy czasowej w przeglądarce, które odzwierciedla skonfigurowaną strefę czasową systemu operacyjnego. Jeśli zegar systemowy jest źle skonfigurowany lub podróżujesz, wyświetlany czas lokalny odzwierciedla to ustawienie.
Jak uzyskać bieżący znacznik czasowy Unix w kodzie?
JavaScript: Math.floor(Date.now() / 1000) dla sekund, lub Date.now() dla milisekund. Python: import time; int(time.time()). Go: time.Now().Unix() dla sekund, time.Now().UnixMilli() dla milisekund. PostgreSQL: EXTRACT(EPOCH FROM NOW()). Bash: date +%s.