Milisekundy na datę
Konwertuj milisekundy na czytelną datę. Wprowadź znacznik czasu w milisekundach (np. 1704067200000).
Dodanie dokładnie 24 godzin w milisekundach wypada o 13:00, a nie o 12:00
Doba to 86 400 000 milisekund, poza dwoma dniami w roku, gdy nią nie jest. Dodaj to do południa w dniu wiosennej zmiany czasu, a zegar pokaże 13:00; zrób to samo jesienią, a pokaże 11:00. Arytmetyka jest poprawna — dzień kalendarzowy i 24 godziny są po prostu dwa razy w roku czymś innym.
Jak to działa
- Przelicza znaczniki czasu w milisekundach na daty i z powrotem, w UTC i czasie lokalnym.
- Pokazuje rozbicie na jednostki, bo wartości milisekundowe trudno odczytać na pierwszy rzut oka.
- Sygnalizuje granicę, na której Date przestaje być poprawną datą, a psuje się to po cichu, a nie głośno.
1 sekunda = 1000 ms 1 godzina = 3 600 000 ms 1 minuta = 60 000 ms 1 doba = 86 400 000 ms zakres obiektu Date w JavaScripcie = ±8 640 000 000 000 000 ms → +275760-09-13 oraz −271821-04-20 jedna milisekunda dalej → Invalid Date
Przykład z liczbami
Dodanie doby w milisekundach przy każdej ze zmian czasu oraz granica zakresu.
- start 28 marca 2026, 12:00 — dodaj 86 400 000 ms → 29 marca, 13:00
- start 24 października 2026, 12:00 — dodaj 86 400 000 ms → 25 października, 11:00
- 8 640 000 000 000 000 ms → +275760-09-13, czyli maksimum
- o milisekundę więcej → Invalid Date
- ta Invalid Date wciąż jest obiektem, a getTime() zwraca NaN
Żadna ze zmian nie sprowadza cię z powrotem na 12:00, bo dzień kalendarzowy trwał 23 albo 25 godzin. A awaria zakresu jest gorsza niż wyjątek: Invalid Date przechodzi test instanceof Date, więc płynie dalej i zamienia każde późniejsze obliczenie w NaN.
Jak czytać wynik
- Używaj arytmetyki kalendarzowej, gdy masz na myśli „o tej samej porze jutro”, a milisekundowej, gdy masz na myśli „za 24 godziny”. Zgadzają się przez 363 dni w roku i właśnie dlatego rozbieżność tak rzadko wychodzi w testach.
- Invalid Date to groźny tryb awarii, bo nie jest błędem. To obiekt Date, którego getTime() zwraca NaN, a NaN propaguje się po cichu przez każdą kolejną operację, aż coś daleko dalej wyrenderuje się jako puste albo zerowe.
- Granica zakresu to ±100 000 000 dni od epoki, co jest na tyle hojne, że jej osiągnięcie niemal zawsze oznacza złe mnożenie, a nie prawdziwą datę — najczęściej sekundy podane tam, gdzie oczekiwano milisekund, co zawyża wartość tysiąckrotnie.
- Milisekundy mieszczą się swobodnie w bezpiecznym zakresie liczb całkowitych, więc w odróżnieniu od nanosekund mogą żyć w zwykłej liczbie bez utraty cyfr. To praktyczny powód, dla którego większość API zatrzymała się na milisekundach, a nie na czymś drobniejszym.
Częste pytania
- Dlaczego moja data jest o godzinę obok po dodaniu doby?
- Przekroczyłeś zmianę czasu. Dodanie 86 400 000 ms dodaje dokładnie 24 godziny, ale ten dzień kalendarzowy miał ich 23 albo 25. Jeśli chciałeś tej samej godziny na zegarze, dodaj jeden dzień arytmetyką kalendarzową, a nie stałą liczbą milisekund.
- Co oznacza Invalid Date?
- Wartość wypadła poza ±8 640 000 000 000 000 ms albo nie dała się sparsować. To nie wyjątek — to obiekt Date, którego getTime() zwraca NaN, więc płynie dalej przez twój kod i po cichu zamienia późniejszą arytmetykę również w NaN.