Konwerter daty/czasu
Kompleksowy parser daty i czasu obslugujacy znaczniki czasu Unix, daty ISO 8601, format RFC 2822, style dat US/EU, dlugie daty i wyrazenia wzgledne. Konwertuje miedzy formatami, wyswietla czas wzgledny i udostepnia odniesienie do biezacego znacznika czasu.
Specyfikacje
Typowe zastosowania
- Debugowanie odpowiedzi API zawierajacych znaczniki czasu lub daty
- Konwersja znacznikow czasu z plikow logow na czytelne daty
- Parsowanie dat z roznych formatow regionalnych
- Obliczanie roznic czasowych miedzy zdarzeniami
- Generowanie znacznikow czasu dla zapytan API
- Weryfikacja czasu wygasniecia tokenow (claim exp JWT)
- Konwersja miedzy formatami dat dla miedzynarodowych zespolow
Funkcje
- Automatyczne wykrywanie formatu: znaczniki czasu Unix, ISO 8601, RFC 2822, daty US/EU i inne
- Parsowanie znacznikow czasu Unix w sekundach, milisekundach, mikrosekundach lub nanosekundach
- Obsluga dat ISO 8601 z czasem lub bez (2024-01-25T12:00:00Z)
- Parsowanie formatu US (01/25/2024), formatu EU (25.01.2024) i dlugich dat (January 25, 2024)
- Rozpoznawanie wyrazen wzglednych: now, today, yesterday, tomorrow
- Wyswietlanie czasu wzglednego ("2 godziny temu", "za 3 dni")
- Znaczniki statusu Przeszlosc/Przyszlosc/Dzisiaj
- Wyswietlanie dnia tygodnia, numeru tygodnia, kwartalu i dnia roku
- Siatka metryk kalendarza (tydzien roku, kwartal, dzien roku)
- Sekcja dodatkowych informacji (strefa czasowa, dni w miesiacu, rok przestepny)
- Konwersja do wielu formatow wyjsciowych z przyciskami kopiowania
- Wyjscie w mikrosekundach i nanosekundach Unix
- Karta referencyjna biezacego czasu z przyciskiem odswiezania
Przyklady
Znacznik czasu Unix (milisekundy)
Wypróbuj →Znacznik czasu w stylu JavaScript w milisekundach.
1706188800000Wskazowki
- JavaScript Date.now() zwraca milisekundy; wiekszosc narzedzi Unix uzywa sekund.
- Format ISO 8601 (2024-01-25T12:00:00Z) jest najbardziej przenosny i jednoznaczny.
- Uzywaj znacznikow czasu UTC do przechowywania; konwertuj na czas lokalny tylko do wyswietlania.
- Gdy data jest niejednoznaczna (np. 01/02/2024), narzedzie wykorzystuje wskazowki kontekstowe do okreslenia formatu.
- "Problem roku 2038" dotyczy systemow 32-bitowych uzywajacych liczb calkowitych ze znakiem dla sekund Unix.
Zrozumienie Konwerter daty/czasu
Znaczniki czasu Unix reprezentuja okreslony moment w czasie jako liczbe sekund, ktore uplynely od epoki Unix: 1 stycznia 1970 roku o godzinie 00:00:00 UTC. Ta prosta reprezentacja w postaci liczby calkowitej jest uniwersalnym formatem czasu w informatyce, uzywanym przez bazy danych, API, systemy plikow, pliki logow i interfejsy systemow operacyjnych. Format jest jednoznaczny — w przeciwienstwie do dat czytelnych dla czlowieka, znacznik czasu Unix zawsze odnosi sie do dokladnie jednego momentu w czasie, niezaleznie od strefy czasowej.
Dwa poziomy dokladnosci sa powszechnie stosowane. Znaczniki czasu z dokladnoscia do sekund (10 cyfr, np. 1738800000) to tradycyjny format Unix uzywany przez wiekszosc API Unix, baz danych i funkcje C time(). Znaczniki czasu z dokladnoscia do milisekund (13 cyfr, np. 1738800000000) sa uzywane przez JavaScript (Date.now()), Java (System.currentTimeMillis()) i wiele API webowych. To narzedzie automatycznie wykrywa dokladnosc i poprawnie obsluguje oba formaty.
ISO 8601 to standardowy czytelny dla czlowieka format daty i czasu: 2025-02-05T12:00:00Z. T oddziela date od czasu, a Z oznacza UTC (czas Zulu). Przesuniecia stref czasowych uzywaja notacji +HH:MM lub -HH:MM. ISO 8601 jest wymagany przez JSON Schema, szeroko stosowany w API REST i zalecany do dowolnej wymiany lancuchow daty i czasu. Format RFC 2822 (uzywany w naglowkach email) to inna popularna reprezentacja tekstowa.
Obsluga stref czasowych jest najczestszym zrodlem bledow zwiazanych z data i czasem. Programisci czesto mylą znaczniki czasu UTC z czasem lokalnym, nieprawidlowo stosuja konwersje stref czasowych lub przechowuja czas lokalny bez informacji o strefie czasowej. Najlepsza praktyka jest zawsze przechowywanie i przesylanie czasu w UTC, konwertujac na czas lokalny tylko do wyswietlania.
Systemy przechowujace znaczniki czasu Unix jako 32-bitowe liczby calkowite ze znakiem ulegna przepelnieniu 19 stycznia 2038 roku o 03:14:07 UTC, zawijajac sie do liczby ujemnej reprezentujacej grudzien 1901. Jest to analogiczne do Y2K, ale wplywa na infrastrukture informatyczna w szerszym zakresie. Rozwiazaniem jest uzycie 64-bitowych liczb calkowitych, co rozszerza zakres do miliardow lat. Wiekszosc nowoczesnych systemow juz uzywa czasu 64-bitowego, ale systemy wbudowane i starszy kod moga byc nadal podatne.
Przy wyborze miedzy przechowywaniem dat jako znacznikow czasu lub sformatowanych lancuchow, nalezy wziac pod uwage przypadek uzycia. Znaczniki czasu (liczby calkowite) sa idealne dla scenariuszy o intensywnych obliczeniach, takich jak sortowanie, obliczanie czasu trwania i porownywanie dat — sa kompaktowe, jednoznaczne i neutralne wobec stref czasowych. Lancuchy ISO 8601 sa preferowane, gdy wazna jest czytelnosc dla czlowieka, gdy kontekst strefy czasowej musi byc zachowany lub gdy baza danych ma natywne typy datetime. Na przyklad timestamptz PostgreSQL przechowuje dane wewnetrznie w UTC i konwertuje je do wyswietlania.
Daty, ktore wydaja sie przesuniete o jeden dzien, sa prawie zawsze spowodowane pomyleniem stref czasowych. Znacznik czasu UTC dla 5 lutego o 23:00 UTC to juz 6 lutego w strefach czasowych UTC+2. W JavaScript Date() uzywa czasu lokalnego dla lancuchow zawierajacych tylko date, ale UTC dla lancuchow datetime z oznaczeniem strefy czasowej. Jawne okreslanie stref czasowych i konsekwentne uzywanie UTC do przechowywania i przesylania zapobiega tym subtelnym bledom.