Pomoc techniczna
Unix Timestamp w sekundach vs milisekundach: dlaczego data pokazuje 1970
Jeśli Unix timestamp zamienia się w datę koło 1970, często sekundy odczytano jako milisekundy. Zobacz, jak rozróżnić jednostki.
Jeśli Unix timestamp daje datę koło 1970, wartość jest często interpretowana w złej jednostce.
Unix timestamp zwykle używa sekund, a JavaScript Date zwykle milisekund.
Współczesny 10-cyfrowy timestamp to często sekundy, 13-cyfrowy — milisekundy. Jeśli jednostki się nie zgadzają, może trzeba pomnożyć lub podzielić przez 1000.
Przekształciłeś timestamp i wylądowałeś w styczniu 1970. To rzadko zepsuty zegar. Liczbę odczytano jako milisekundy, choć była w sekundach—albo odwrotnie.
Czym jest Unix timestamp?
Unix timestamp mierzy czas od Unix epoch: 1970-01-01 00:00:00 UTC. Zwykle używa pełnych sekund. Ten sam moment można zapisać w milisekundach (sekundy × 1000). Sama liczba nie podaje jednostki.
Sekundy vs milisekundy: różnica ×1000
Jedna sekunda to 1000 milisekund. Porównaj 1720000000 z 1720000000000. Jeśli pierwsze to sekundy, a drugie milisekundy, to ten sam moment. Odczytaj pierwsze jako milisekundy — data skacze ku 1970.
Te wyniki UTC policzono z liczb powyżej, nie oszacowano.
| Wartość | Prawdopodobna jednostka | Interpretacja (UTC) |
|---|---|---|
| 1720000000 | Sekundy | Współczesna data jako sekundy: 2024-07-03 09:46:40 UTC |
| 1720000000000 | Milisekundy | Ten sam moment jako milisekundy: 2024-07-03 09:46:40 UTC |
| 1720000000 jako milisekundy | Zła jednostka | Data koło 1970: 1970-01-20 21:46:40 UTC |
Dlaczego mój timestamp pokazuje 1970?
Jeśli wartość w sekundach jest traktowana jako milisekundy, liczba jest 1000 razy za mała. JavaScript liczy krótki odcinek po Unix epoch, więc data zostaje w 1970:
const seconds = 1720000000;
new Date(seconds);
// 1970-01-20 21:46:40 UTC
new Date(seconds * 1000);
// 2024-07-03 09:46:40 UTC
Ta data z 1970 to epoch plus około dwóch tygodni. Pomnóż sekundy przez 1000, zanim przekażesz je do Date.
- SEKUNDY
- 1720000000
- MILISEKUNDY
- 1720000000000
- Wartość w sekundach
- Błędnie potraktowana jako milisekundy
- Data koło 1970
Jeśli wynik jest koło 1970, sprawdź jednostkę timestampu, zanim zaczniesz badać strefę czasową.
Czy 10 cyfr to sekundy, a 13 milisekundy?
Przy dzisiejszych datach 10 cyfr to często sekundy, a 13 milisekundy. To szybka wskazówka, nie reguła walidacji. Liczba cyfr zmienia się wraz z zakresem czasu, a niektóre API zapisują mikrosekundy lub nanosekundy. Potwierdź jednostkę w dokumentacji albo datą, która ma sens.
Dlaczego to tak często dzieje się w JavaScript
W JavaScript liczbowy Date to milisekundy od epoch. Wiele backendów, baz i narzędzi Unix nadal zapisuje sekundy. Podanie sekund wprost do Date to częsty błąd:
const unixSeconds = 1720000000;
const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);
wrong jest koło 1970 (1970-01-20 21:46:40 UTC). correct to współczesny moment (2024-07-03 09:46:40 UTC).
Inne systemy używają innych jednostek
Inne języki, API i bazy mogą używać sekund lub milisekund. Niektóre zapisują mikrosekundy lub nanosekundy. Nie zakładaj, że język zawsze używa jednej jednostki — sprawdź dokumentację. Jeśli liczba jest w JSON, Formatowanie i porównywanie JSON ułatwi odczyt pola; jednostki i tak nie poda.
Jak poznać jednostkę mojego timestampu?
Przejdź te sprawdzenia po kolei. Sama liczba cyfr nie wystarczy.
- Sprawdź dokumentację API lub bazy danych.
- Spójrz na przybliżoną liczbę cyfr.
- Porównaj wartość z wiarygodnym współczesnym timestampem.
- Przetestuj wartość jako sekundy i jako milisekundy.
- Sprawdź, czy wynikowa data ma sens.
Jeśli jedna interpretacja daje 1970, a druga datę, którą rozpoznajesz, przyczyną jest jednostka.
Częste błędy przy Unix timestamp
- Sekundy odczytane jako milisekundy. Data zapada się ku 1970, jak w przykładzie.
- Milisekundy odczytane jako sekundy. Data skacze daleko w przyszłość albo konwersja się nie udaje.
- Mnożenie przez 1000 dwa razy. Wartość, która już była w milisekundach, staje się ogromna, a data ucieka o stulecia.
- Dzielenie przez 1000 dwa razy. Wartość w sekundach znów się kurczy, znowu koło 1970.
- Obwinianie strefy czasowej. Strefa może przesunąć godziny lub dzień kalendarzowy. Nie zamienia współczesnego timestampu w 1970.
- Traktowanie sformatowanej daty jak Unix timestamp. Wartość jak 2024-07-03T09:46:40Z to nie liczba epoch. Parsuj ją jako datę, nie jako sekundy.
Czy strefa czasowa powoduje problem 1970?
Zwykle nie. Strefa może zmienić wyświetlany zegar i, blisko północy, datę kalendarzową. Nie zamienia współczesnego Unix timestampu w 1970. Jeśli wynik to 1970, najpierw sprawdź sekundy kontra milisekundy.
Konwersja i sprawdzenie Unix timestamp
NEXNARA Konwerter daty i czasu może przekonwertować Unix timestamp w przeglądarce.
Wklej sekundy lub milisekundy Unix, użyj bieżącego timestampu, zobacz UTC i czas lokalny, przelicz strefy i sformatuj datę. Autowykrywanie często traktuje 10 cyfr jako sekundy, a 13 jako milisekundy; jednostkę i tak możesz wybrać sam.
Sama konwersja odbywa się w przeglądarce. To narzędzie nie wysyła dat ani timestampów na serwer NEXNARA. Reklamy i inne funkcje witryny nadal korzystają z sieci; to osobna sprawa od konwersji.
Chcesz sprawdzić Unix timestamp? Otwórz Konwerter daty i czasu i porównaj sekundy z milisekundami.
FAQ
Dlaczego mój Unix timestamp pokazuje 1970?
Często to sekundy odczytane jako milisekundy. JavaScript traktuje dużo mniejszą liczbę, więc data wypada tuż po 1970-01-01 00:00:00 UTC. Pomnóż sekundy przez 1000 i przekonwertuj ponownie.
Czy Unix timestamp to sekundy, czy milisekundy?
Zwykle sekundy. Wiele API WWW i JavaScript Date używa milisekund. Sprawdź dokumentację. Niektóre systemy używają mikrosekund lub nanosekund.
Jak zamienić sekundy na milisekundy?
Pomnóż przez 1000. 1720000000 sekund to 1720000000000 milisekund. W drugą stronę podziel przez 1000.
Dlaczego JavaScript Date używa milisekund?
Liczbowy timestamp Date w JavaScript jest zdefiniowany jako milisekundy od Unix epoch. Dlatego new Date(unixSeconds) jest błędne, gdy unixSeconds to sekundy Unix.
Czy 10-cyfrowy timestamp zawsze to sekundy?
Nie. Przy dzisiejszych datach często tak, a 13 cyfr to często milisekundy. Liczba cyfr to wskazówka, nie reguła. Potwierdź dokumentacją albo datą, która ma sens.
Czy Unix timestamp zawiera strefę czasową?
Nie. Unix timestamp to chwila liczona od 1970-01-01 00:00:00 UTC. Strefy wpływają na wyświetlanie, nie na samą liczbę.