Tech Help

Unix Timestamp: секунди наспроти милисекунди — зошто датумот покажува 1970

Ако Unix timestamp стане датум близу 1970, често секундите се прочитани како милисекунди. Како да ги разликувате единиците.

Краток одговор

Ако Unix timestamp даде датум близу 1970, вредноста често се толкува во погрешна единица.

Unix timestamp обично користи секунди, а JavaScript Date обично милисекунди.

Современ 10-цифрен timestamp често се секунди, 13-цифрен често милисекунди. Ако единиците не се совпаѓаат, може да треба множење или делење со 1000.

Претворивте timestamp и завршивте во јануари 1970. Часовникот речиси никогаш не е расипан. Бројот е прочитан како милисекунди иако бил во секунди — или обратно.

Што е Unix timestamp?

Unix timestamp го мери времето од Unix epoch: 1970-01-01 00:00:00 UTC. Обично користи цели секунди. Истиот миг може да се чува и во милисекунди (секунди × 1000). Самиот број не ја означува единицата.

Секунди наспроти милисекунди: разлика ×1000

Една секунда е 1000 милисекунди. Споредете 1720000000 со 1720000000000. Ако првото се секунди, а второто милисекунди, тоа е истиот миг. Прочитајте го првото како милисекунди и датумот скока кон 1970.

Овие UTC резултати се пресметани од броевите погоре, не се претпоставка.

Вредност Веројатна единица Толкување (UTC)
1720000000 Секунди Современ датум како секунди: 2024-07-03 09:46:40 UTC
1720000000000 Милисекунди Истиот миг како милисекунди: 2024-07-03 09:46:40 UTC
1720000000 како милисекунди Погрешна единица Датум близу 1970: 1970-01-20 21:46:40 UTC

Зошто мојот timestamp покажува 1970?

Ако вредност во секунди се третира како милисекунди, бројот е 1000 пати премал. JavaScript тогаш брои само краток распон по Unix epoch, па датумот останува во 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

Тој датум од 1970 е epoch плус околу две недели. Помножете ги секундите со 1000 пред да ги дадете на Date.

  • СЕКУНДИ
  • 1720000000
  • МИЛИСЕКУНДИ
  • 1720000000000
Истиот миг: секунди × 1000 = милисекунди.
  • Вредност во секунди
  • Погрешно третирана како милисекунди
  • Датум близу 1970
Секунди прочитани како милисекунди паѓаат близу Unix epoch.
Секунди или милисекунди?

Ако резултатот е близу 1970, проверете ја единицата на timestamp пред да ја истражувате временската зона.

Дали 10 цифри се секунди, а 13 милисекунди?

За денешни датуми 10 цифри често се секунди, а 13 често милисекунди. Тоа е брз показател, не правило за проверка. Бројот на цифри се менува со временскиот опсег, а некои API чуваат микросекунди или наносекунди. Потврдете ја единицата со документација или датум што има смисла.

Зошто ова толку често се случува во JavaScript

Во JavaScript бројчениот Date е милисекунди од epoch. Многу бекенди, бази и Unix алатки сè уште чуваат секунди. Да се дадат секунди директно во Date е честа грешка:

const unixSeconds = 1720000000;

const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);

wrong е близу 1970 (1970-01-20 21:46:40 UTC). correct е тој современ миг (2024-07-03 09:46:40 UTC).

Други системи користат други единици

Други јазици, API и бази може да користат секунди или милисекунди. Некои чуваат микросекунди или наносекунди. Не претпоставувајте дека јазик секогаш користи една единица — видете ја документацијата. Ако бројот е во JSON, Форматирање и споредба на JSON го прави полето читливо; единицата сепак нема да ја каже.

Како да знам која единица ја користи мојот timestamp?

Поминете ги овие проверки по ред. Само бројот на цифри не е доволен.

  1. Проверете ја документацијата на API или базата.
  2. Погледнете го приближниот број цифри.
  3. Споредете ја вредноста со веродостоен современ timestamp.
  4. Испробајте ја вредноста како секунди и како милисекунди.
  5. Проверете дали добиениот датум има смисла.

Ако едно толкување падне во 1970, а другото на датум што го препознавате, причината е неусогласеност на единиците.

Чести грешки со Unix timestamp

  • Секунди протолкувани како милисекунди. Датумот се урива кон 1970, како во примерот погоре.
  • Милисекунди протолкувани како секунди. Датумот скока далеку во иднината, или претворањето не успева.
  • Множење со 1000 двапати. Вредност што веќе била во милисекунди станува огромна и датумот скока векови напред.
  • Делење со 1000 двапати. Вредност во секунди повторно се собира, повторно близу 1970.
  • Да се обвинува временската зона. Зоната може да ги помести часовите или календарскиот ден. Не пренесува современ timestamp во 1970.
  • Форматиран датум да се третира како Unix timestamp. Вредност како 2024-07-03T09:46:40Z не е број epoch. Рашчленете ја како датум, не како секунди.

Дали временската зона го предизвикува проблемот 1970?

Обично не. Зоната може да го смени прикажаниот часовник и близу полноќ календарскиот датум. Не претвора современ Unix timestamp во 1970. Ако резултатот е 1970, прво проверете секунди наспроти милисекунди.

Претворете и проверете Unix timestamp

NEXNARA Претворувач на датум и време може да претвори Unix timestamp во прелистувачот.

Залепете Unix секунди или милисекунди, користете го тековниот timestamp, видете UTC и локално време, претворете зони и форматирајте датум. Автоматското препознавање често ги третира 10 цифри како секунди, а 13 како милисекунди; единицата сепак можете да ја изберете.

Самото претворање се случува во прелистувачот. Алатката не испраќа датуми ни timestamp на сервер на NEXNARA. Рекламите и другите функции на страницата сè уште ја користат мрежата; тоа е одвоено од претворањето.

Треба да проверите Unix timestamp? Отворете Претворувач на датум и време и споредете секунди со милисекунди.

FAQ

Зошто мојот Unix timestamp покажува 1970?

Често се секунди прочитани како милисекунди. JavaScript тогаш обработува многу помал број, па датумот паѓа веднаш по 1970-01-01 00:00:00 UTC. Помножете ги секундите со 1000 и претворете повторно.

Дали Unix timestamp се секунди или милисекунди?

Обично секунди. Многу веб API и JavaScript Date користат милисекунди. Секогаш проверете што документира тој систем. Некои системи користат микросекунди или наносекунди.

Како да ги претворам секундите во милисекунди?

Помножете со 1000. 1720000000 секунди се 1720000000000 милисекунди. Во другата насока поделете со 1000.

Зошто JavaScript Date користи милисекунди?

Бројчениот timestamp на Date во JavaScript е дефиниран како милисекунди од Unix epoch. Затоа new Date(unixSeconds) е погрешно кога unixSeconds се Unix секунди.

Дали 10-цифрен timestamp секогаш е секунди?

Не. За денешни датуми често да, а 13 цифри често се милисекунди. Бројот на цифри е показател, не правило. Потврдете со документација или датум што има смисла.

Дали Unix timestamp содржи временска зона?

Не. Unix timestamp е миг броен од 1970-01-01 00:00:00 UTC. Зоните влијаат на приказот, не на самиот број.