Перетворення мітки часу Unix на дату і дати на мітку часу
Опубліковано · Оновлено 2 хв читання
Мітка часу Unix відлічує час, що минув від 1 січня 1970 року, північ за всесвітнім часом. Дату результату визначають два питання: одиниця числа та часовий пояс, у якому читається результат.
Опорне значення
Конвертувати мітку часу Unix дає три прочитання одного й того самого моменту. Для 1700000000 за браузера, налаштованого на паризький час:
| Прочитання | Результат |
|---|---|
| Дата UTC | Tue, 14 Nov 2023 22:13:20 GMT |
| Місцева дата | 14 листопада 2023 р. о 23:13:20 UTC+1 |
| ISO | 2023-11-14T22:13:20.000Z |
Місцевий час слідує за часовим поясом браузера: на годину більше в Парижі взимку. Одна й та сама мітка це один момент, прочитаний у двох часових поясах.
Одиниця визначається за кількістю цифр
Налаштування за замовчуванням визначає одиницю за довжиною числа. Три значення нижче позначають той самий момент, з точністю до точності.
| Число | Цифри | Визначена одиниця | Отриманий момент |
|---|---|---|---|
| 1700000000 | 10 | Секунди | 14 лист. 2023 р., 22:13:20 UTC |
| 1700000000000 | 13 | Мілісекунди | 14 лист. 2023 р., 22:13:20 UTC |
| 1700000000123456 | 16 | Мікросекунди | 14 лист. 2023 р., 22:13:20,123 UTC |
Правило: до 11 цифр секунди; від 12 до 14 мілісекунди; 15 і 16 мікросекунди. Налаштування «мілісекунди» примусово задає цю одиницю.
Пастка правила
Оскільки одиниця виводиться з довжини, неоднозначне значення читається одним способом: 10000000000 (11 цифр) дає 20 листопада 2286 року, а 100000000000 (12 цифр) дає 3 березня 1973 року. Мітка в мілісекундах до березня 1973 року має 11 цифр або менше і була б прочитана як секунди: тоді примусово задайте налаштування «мілісекунди».
Значення до 1970 року й межа 2038 року
Від’ємне число позначає момент до 1970 року: −1 дає 31 грудня 1969 року, 23:59:59 UTC, а 0 дає 1 січня 1970 року, північ.
Число 2147483647 це найбільше, яке вміщує знакове 32-бітне ціле: воно дає 19 січня 2038 року, 03:14:07 UTC. Наступне число, 2147483648, дає 03:14:08: інструмент продовжує без обмеження, а система, що зберігає час у 32 бітах, не може.
Перетворення дати на мітку
Введіть дату замість числа: інструмент видає мітку в секундах і в мілісекундах.
| Введення | Мітка в секундах | Прочитання |
|---|---|---|
| 2026-01-01 | 1767225600 | Північ за всесвітнім часом, часовий пояс не вказано |
| 2026-01-01T10:30:00+01:00 | 1767259800 | 10:30 у Парижі, тобто 09:30 за всесвітнім часом |
| 2024-02-29 | 1709164800 | Високосний рік прийнято |
Дата без часового поясу читається за всесвітнім часом, а не за місцевим: інструмент нагадує про це в результаті. Неіснуюча дата, як-от 30 лютого 2026 року, відхиляється з повідомленням.
Часті помилки
- Читати мілісекунди як секунди: дата опиняється на тисячі років далі.
- Забути про часовий пояс: дата, прочитана як місцева, а потім надіслана як всесвітня, зміщується на годину чи більше.
- Записати дату без часового поясу, думаючи про місцевий час, коли її буде прочитано в UTC.
Щоб порахувати дні між двома датами, див. Підрахунок днів між двома датами.
Перевірка перетворення
- Перечитайте рядок UTC, який не залежить від пристрою.
- Перевірте одиницю, указану в першому рядку результату.
- Перетворіть отриману дату назад: має вийти початкове число.
