Konwerter znacznika czasu Unix na datę: Wsparcie dla formatu 12/24 godziny
Konwertuj znaczniki czasu Unix na daty i godziny w formacie czytelnym dla ludzi. Wybierz między formatem 12-godzinnym a 24-godzinnym za pomocą tego prostego, przyjaznego narzędzia konwertera.
Konwerter znacznika czasu Unix
Znacznik czasu Unix to liczba sekund od 1 stycznia 1970 roku (UTC)
Przekonwertowana data i czas
Czym jest znacznik czasu Unix?
Znacznik czasu Unix to liczba sekund, które upłynęły od 1 stycznia 1970 roku (północ UTC/GMT), nie licząc sekund przestępnych. Jest szeroko stosowany w systemach Unix i językach programowania do obliczeń daty i czasu.
Dokumentacja
Konwerter znaczników czasu Unix na datę
Znacznik czasu Unix to liczba reprezentująca konkretny moment. Zlicza pełne sekundy, które upłynęły od północy czasu UTC w dniu 1 stycznia 1970 — chwili nazywanej epoką Unix. To narzędzie przekształca znacznik czasu Unix w datę kalendarzową i czas, wyświetlane w formacie 24- lub 12-godzinnym.
Jak przekształcić znacznik czasu Unix w datę
Podstawowy wzór jest prosty:
data = epoka Unix (1970-01-01, 00:00:00 UTC) + znacznik czasu (w sekundach)
Aby przekształcić surową liczbę sekund w datę, należy dodać tę liczbę sekund do dnia 1 stycznia 1970. Następnie wynik trzeba rozłożyć na rok, miesiąc, dzień, godzinę, minutę i sekundę. To najtrudniejsza część, ponieważ trzeba uwzględnić lata przestępne, które dodają jeden dzień do lutego, oraz różną długość miesięcy. Większość języków programowania ma wbudowaną funkcję obsługi dat, która wykonuje to automatycznie, więc nie trzeba obliczać wszystkiego krok po kroku.
Przykład obliczeń
Rozważmy znacznik czasu 1609459200.
- Podziel tę wartość przez liczbę sekund w dobie: 1 609 459 200 ÷ 86 400 = 18 628 dni.
- Odlicz 18 628 dni od 1 stycznia 1970, uwzględniając po drodze lata przestępne.
- Wynik przypada na dzień 1 stycznia 2021.
Zatem 1609459200 oznacza piątek, 1 stycznia 2021, 00:00:00 UTC. Dzień tygodnia, piątek, wynika z tego samego zliczania dni.
Konwerter wyświetla wynik w strefie czasowej zgłaszanej przez przeglądarkę, a nie w czasie UTC. Czytelnik w Nowym Jorku zobaczy ten sam znacznik czasu jako czwartek, 31 grudnia 2020, 19:00:00, ponieważ tego dnia Nowy Jork znajdował się pięć godzin za UTC.
Znacznik czasu może być także ujemny, co oznacza datę sprzed 1970 roku. Na przykład -86400 oznacza dokładnie jeden dzień przed epoką: 31 grudnia 1969, 00:00:00 UTC.
Precyzja znacznika czasu: sekundy, milisekundy i mikrosekundy
Nie każdy system mierzy czas w sekundach. Ten konwerter sprawdza, ile cyfr ma znacznik czasu, i na tej podstawie zgaduje jego precyzję:
| Cyfry | Precyzja | Przykład |
|---|---|---|
| 10 | Sekundy | 1609459200 |
| 13 | Milisekundy | 1609459200000 |
| 16 | Mikrosekundy | 1609459200000000 |
Ujemny znacznik czasu ma o jeden znak więcej ze względu na znak minus, dlatego -1609459200 (11 znaków, 10 cyfr) nadal jest odczytywany jako liczba sekund. Każda inna liczba cyfr jest traktowana jako sekundy. Wartości w milisekundach i mikrosekundach są dzielone odpowiednio przez 1 000 lub 1 000 000 przed zastosowaniem powyższego wzoru dla sekund.
Format czasu 12- i 24-godzinny
Konwerter oferuje dwa sposoby wyświetlania pory dnia.
- Format 24-godzinny liczy godziny od 0 do 23, bez oznaczeń AM i PM. Programiści czasami nazywają go czasem wojskowym. 3:00 po południu zapisuje się jako 15:00.
- Format 12-godzinny liczy godziny od 1 do 12, dodając AM dla okresu od północy do południa oraz PM dla okresu od południa do północy. 15:00 w formacie 24-godzinnym staje się godziną 3:00 PM.
Format 24-godzinny jest standardem w większości Europy, Ameryki Łacińskiej i Azji, a także w środowiskach naukowych, wojskowych i medycznych na całym świecie. Format 12-godzinny pozostaje powszechny w codziennym użyciu w Stanach Zjednoczonych, Kanadzie i kilku innych krajach anglojęzycznych.
Obsługiwany zakres dat
Ten konwerter akceptuje dowolny znacznik czasu od -62135596800 do 253402300799. Obejmuje to wszystkie daty od 1 stycznia roku 1 do 31 grudnia 9999 w proleptycznym kalendarzu gregoriańskim, czyli współczesnym kalendarzu zastosowanym wstecz przed jego wprowadzeniem w roku 1582. Znaczniki czasu spoza tego zakresu są odrzucane z powodu błędu zakresu.
Problem roku 2038
Wiele starszych systemów komputerowych przechowuje znacznik czasu Unix jako liczbę całkowitą ze znakiem o szerokości 32 bitów, która może zliczać tylko do 2 147 483 647. Taka liczba sekund po epoce przypada na 19 stycznia 2038 o 03:14:07 UTC. Po tym momencie niezałatany system o szerokości słowa 32 bitów przepełnia się, powraca do liczby ujemnej i odczytuje datę jako przypadającą w roku 1901 zamiast 2038. Zjawisko to jest znane jako problem roku 2038. Nie dotyczy ono każdego systemu: współczesne oprogramowanie, które przechowuje znaczniki czasu jako liczby o szerokości 64 bitów albo jako zwykłe liczby, tak jak robi to JavaScript, może reprezentować daty tysiące lat późniejsze niż 2038 bez przepełnienia.
Typowe zastosowania znaczników czasu Unix
Znaczniki czasu Unix są używane w całej informatyce, ponieważ zajmują mało miejsca i łatwo je porównywać lub sortować:
- Wiersze baz danych wykorzystują je do zapisywania czasu utworzenia rekordu lub jego ostatniej modyfikacji.
- Serwery internetowe używają ich w nagłówkach HTTP i plikach cookie do sterowania buforowaniem oraz wygasaniem danych.
- Pliki dzienników oznaczają nimi każde zdarzenie, dzięki czemu wpisy można uporządkować chronologicznie.
- Git i inne systemy kontroli wersji zapisują w ten sposób czas zatwierdzenia zmian.
- Interfejsy API sieci Web używają ich do oznaczania czasu wygenerowania danych lub ich ostatniej aktualizacji.
Najczęściej zadawane pytania
Czym jest epoka Unix? Epoka Unix przypada na północ czasu UTC w dniu 1 stycznia 1970. Jest punktem zerowym, od którego zliczane są wszystkie znaczniki czasu Unix.
Czy znacznik czasu Unix uwzględnia sekundy przestępne? Nie. Czas Unix liczy dokładnie 86 400 sekund na dobę i pomija sekundy przestępne dodawane czasami do czasu UTC, przez co nieznacznie rozmija się z czasem astronomicznym.
Czy znacznik czasu Unix może być ujemny? Tak. Wartość ujemna oznacza datę sprzed 1 stycznia 1970.
Dlaczego mój znacznik czasu ma 13 cyfr zamiast 10?
Znacznik czasu złożony z 13 cyfr jest mierzony w milisekundach, a nie w sekundach. Metoda JavaScriptu Date.now() i wiele interfejsów API sieci Web zwracają znaczniki czasu w milisekundach, dlatego wartości 13-cyfrowe są powszechne w tworzeniu aplikacji internetowych.
Czy znacznik czasu Unix jest taki sam w każdej strefie czasowej? Sama liczba nie jest powiązana z żadną strefą czasową. Zawsze oznacza liczbę sekund od epoki w czasie UTC. Przekształcenie jej w lokalną datę i godzinę wymaga dodania przesunięcia danej strefy, dlatego wynik konwertera zależy od strefy czasowej urządzenia, na którym jest uruchomiony.
Jaka jest najpóźniejsza data obsługiwana przez ten konwerter? 31 grudnia 9999 o 23:59:59 UTC, której odpowiada znacznik czasu 253402300799. Najwcześniejsza to 1 stycznia roku 1 o 00:00:00 UTC, której odpowiada znacznik czasu -62135596800.