Tech Help
Unix Timestamp към дата: секунди, милисекунди и UTC обяснени
Преобразувайте Unix timestamp в дата. Вижте секунди срещу милисекунди, UTC срещу местно време, ISO 8601 и как да се върнете от дата към epoch време.
Unix timestamp изразява времето спрямо Unix epoch: 1970-01-01 00:00:00 UTC. Обикновено се пази като секунди от epoch или като милисекунди от epoch.
За правилно преобразуване първо трябва да знаете единицата. 1720000000 секунди са 2024-07-03 09:46:40 UTC. 1720000000000 милисекунди са същият миг.
Timestamp идентифицира миг. UTC, местното време или зона IANA променят само как се показва този миг.
Това е ръководство за преобразуване: timestamp към дата, дата към timestamp, UTC срещу местно време и ISO 8601. Ако стойност неочаквано стане дата от 1970, обикновено е разминаване секунди/милисекунди — вижте Unix Timestamp: секунди срещу милисекунди — защо датата показва 1970.
Какво е Unix Timestamp?
Unix timestamp, Unix time и epoch time обикновено означават изминало време от 1970-01-01 00:00:00 UTC. Числото не е форматиран низ за дата с етикет на часова зона. Същият миг може да се покаже с различни часове в UTC, Ню Йорк, Токио или Сеул. Unix timestamp не винаги са секунди — милисекундите са често срещани на практика.
Какво е Unix Epoch?
Unix epoch е 1970-01-01 00:00:00 UTC. Timestamp 0 е този миг. Положителният timestamp е след epoch. Някои системи допускат отрицателен timestamp за време преди epoch, но поддръжката на езика и диапазона от дати се различава.
Timestamp-ът ми в секунди ли е, или в милисекунди?
1720000000 са секунди; 1720000000000 са милисекунди; това е същият миг. Практическа подсказка: около 10 цифри често означават секунди, около 13 често милисекунди. Броят цифри е само евристика. Минали или бъдещи дати, други единици или собствен epoch могат да изглеждат различно. Преобразувател на дата и час може да преобразува със секунди, милисекунди или автоматично (≤10 цифри като секунди, ≥13 като милисекунди) — изберете единицата, когато я знаете.
Защо грешната единица дава грешна дата?
JavaScript Date очаква милисекунди. Ако подадете 1720000000 като милисекунди, се получава 1970-01-20 21:46:40 UTC. Да третирате милисекунди като секунди, или обратното, води до съвсем друга дата. За пътя на диагностика за 1970 вижте Unix Timestamp: секунди срещу милисекунди — защо датата показва 1970.
new Date(1720000000);
// 1970-01-20T21:46:40.000Z
Как да преобразувате Unix timestamp в секунди
Умножете секундите по 1000, за да получите милисекунди. JavaScript Date е на база милисекунди, затова използвайте new Date(timestamp * 1000).
const timestamp = 1720000000;
const date = new Date(timestamp * 1000);
date.toISOString();
// 2024-07-03T09:46:40.000Z
Как да преобразувате timestamp в милисекунди
Подайте милисекундите направо на Date. Не умножавайте отново по 1000 timestamp, който вече е в милисекунди.
const timestamp = 1720000000000;
const date = new Date(timestamp);
date.toISOString();
// 2024-07-03T09:46:40.000Z
Защо същият timestamp показва друго време?
Unix timestamp е един миг. Показването в UTC, местно време или избрана зона IANA сменя циферблата. За 1720000000000 UTC е 2024-07-03 09:46:40. America/New_York на този ден е 2024-07-03 05:46:40 (EDT). Asia/Seoul е 2024-07-03 18:46:40 (UTC+9). Стойностите за Ню Йорк и Сеул идват от Intl, не от лозунг за фиксирано отместване.
Съдържа ли Unix timestamp часова зона?
Не. Не пази America/New_York нито Asia/Seoul. Timestamp идентифицира миг. Часовата зона се прилага, когато форматирате мига като четима дата и час. Epoch е дефиниран спрямо UTC; самото число не е „поле за часова зона UTC“.
Unix Timestamp срещу ISO 8601
1720000000 и 2024-07-03T09:46:40Z могат да означават същия миг. Unix е числова стойност на изминало време. ISO 8601 е четим низ дата-час и може да завършва със Z (UTC) или числово отместване. Z означава UTC; понякога се нарича Zulu. Не са един и същ формат.
Как да получите текущия Unix timestamp?
В JavaScript Date.now() е милисекунди. Math.floor(Date.now() / 1000) е секунди. Не заковавайте „сега“ в статия; то се мести.
Date.now();
Math.floor(Date.now() / 1000);
Може ли дата да се преобразува обратно в Unix timestamp?
Да. От явен UTC ISO низ getTime() връща милисекунди; разделете на 1000 и закръглете надолу за секунди.
const date = new Date("2024-07-03T09:46:40Z");
date.getTime();
// 1720000000000
Math.floor(date.getTime() / 1000);
// 1720000000
Внимавайте с двусмислени формати на дата
03/07/2024 може да означава 7 март или 3 юли според региона. Предпочитайте дата и час в стил ISO с зона или отместване. Преобразувател на дата и час отхвърля двусмислени числови дати като 01/02/2026 и иска избор на дата или стойност в стил ISO.
А лятното часово време?
Unix timestamp не пази флаг за лятно часово време. Местното показване прилага правилата на зоната. America/New_York използва различни отмествания зима и лято, затова „Ню Йорк е UTC-5“ не винаги е вярно.
Включват ли Unix timestamp високосни секунди?
Типичното време POSIX/Unix не брои високосните секунди като допълнителни SI секунди на непрекъсната скала. Платформите могат да се различават. При ежедневно преобразуване тази подробност може да се пренебрегне.
Чести грешки при преобразуване на Unix timestamp
Тези обърквания дават грешна дата или грешен циферблат:
Секунди третирани като милисекунди
Съвременна стойност в секунди тогава попада близо до 1970 в JavaScript Date.
Милисекунди третирани като секунди
Датата скача далеч в бъдещето.
Да се приемат 10 или 13 цифри за закон
Броят цифри е подсказка, не гаранция.
Объркване на UTC с местно време
Мигът е същият; показаният часовник може да се различава.
Предположение, че зоната е в числото
Имената IANA се прилагат при показване, не се пазят в timestamp.
Двусмислени дати, лозунги за лятно време или излишно ×1000
Използвайте вход в стил ISO. Не умножавайте отново timestamp в милисекунди.
Проверени примери UTC
Тези часове UTC са изчислени, не отгатнати:
| Вход | Единица | UTC |
|---|---|---|
| 0 | секунди | 1970-01-01 00:00:00 |
| 1720000000 | секунди | 2024-07-03 09:46:40 |
| 1720000000000 | милисекунди | 2024-07-03 09:46:40 |
| 1720000000 | милисекунди | 1970-01-20 21:46:40 |
Просто ръководство за решение при преобразуване
Ако източникът назовава единицата, използвайте я. Иначе броят цифри е подсказка — после проверете дали датата изглежда правдоподобна. Преобразувайте секунди в милисекунди, когато API трябва ms. За показване изберете UTC, местно или зона IANA. ISO 8601 е полезен за съхранение и обмен.
- Имате Unix timestamp
- Единица посочена? Използвайте я; иначе проверете порядъка
- Секунди? ×1000 ако API трябва милисекунди
- Милисекунди? Използвайте направо в API на база ms
- Покажете като UTC, местно или зона IANA
- Трябва низ? ISO 8601 може да пасне
Timestamp идентифицира точка във времето. UTC, местното време или часовата зона само решават как този миг се показва на човек.
Преобразувайте Unix timestamp в браузъра
NEXNARA Преобразувател на дата и час преобразува Unix секунди и милисекунди, показва UTC, местно време и ISO 8601 и преобразува между часови зони IANA.
Режимът Unix поддържа секунди, милисекунди, автоматична единица, текущо време и дата към timestamp. Режимът за зона търси имена IANA, използва зоната на браузъра и прилага отмествания Intl със знание за лятно време. Режимът за формат има изход, четим по регион, показване 12/24 и защита от двусмислена дата. Разлика между дати е отделен режим.
Преобразуването използва API Date и Intl на браузъра. Стойности извън това, което Date може да представи, се отхвърлят. Автоматичната единица не отгатва стойности с 11–12 цифри; изберете секунди или милисекунди.
Самото преобразуване на дата и timestamp става в браузъра ви. Входът не се изпраща към сървър на NEXNARA за преобразуване. Рекламите и други функции на сайта все пак използват мрежата.
Поставете timestamp в Преобразувател на дата и час и сравнете UTC, местно време и ISO 8601, преди да изберете единица.
FAQ
Как да преобразувам Unix timestamp в дата?
Познайте единицата. За секунди в JavaScript използвайте new Date(n * 1000). За милисекунди new Date(n). След това форматирайте като UTC, местно или зона.
Unix timestamp в секунди ли е, или в милисекунди?
И двете. Около 10 цифри често означават секунди, около 13 милисекунди, но това е евристика, не правило.
Защо timestamp-ът ми показва 1970?
Обикновено стойност в секунди е прочетена като милисекунди. Вижте Unix Timestamp: секунди срещу милисекунди — защо датата показва 1970.
Unix timestamp винаги ли е UTC?
Epoch е дефиниран спрямо UTC и числото идентифицира миг. Зоната за показване е отделна. Не е съхранено „поле за часова зона UTC“.
Съдържа ли Unix timestamp часова зона?
Не. Не носи идентификатор IANA. Зоната се прилага, когато форматирате мига.
Как да преобразувам дата в Unix timestamp?
От UTC ISO низ date.getTime() е милисекунди; Math.floor(date.getTime() / 1000) е секунди.