🛠️

Whiz Tools

Build • Create • Innovate

Конвертер Unix Timestamp у Дату: Підтримка Форматів 12/24 Години

Конвертуйте Unix timestamps у зрозумілі дати та час. Обирайте між 12-годинним та 24-годинним форматами часу за допомогою цього простого, зручного інструменту конвертації.

Конвертер Unix Timestamp

الطابع الزمني يونكس هو عدد الثواني منذ 1 يناير 1970 (UTC)

Перетворена дата та час

📚

Документація

Конвертер Unix-часів

Вступ

Unix-час (також відомий як POSIX-час або час Епохи) — це система для опису моменту часу. Це кількість секунд, що пройшли з 1 січня 1970 року (опівночі UTC/GMT), без урахування високосних секунд. Unix-часи широко використовуються в комп'ютерних системах і мовах програмування, оскільки вони забезпечують компактне, незалежне від мови представлення конкретного моменту часу.

Цей конвертер дозволяє вам перетворити Unix-час у зрозумілий для людини формат дати та часу. Він підтримує як 12-годинний (AM/PM), так і 24-годинний формати часу, щоб задовольнити різні регіональні та особисті уподобання.

Як працюють Unix-часи

Unix-часи обчислюються як кількість секунд з моменту Unix-Епохи (1 січня 1970 року, 00:00:00 UTC). Це робить їх особливо корисними для обчислення різниць у часі та для зберігання дат у компактному форматі.

Математичне перетворення з Unix-часу на календарну дату включає кілька етапів:

  1. Розпочніть з Unix-Епохи (1 січня 1970 року, 00:00:00 UTC)
  2. Додайте кількість секунд у часовій мітці
  3. Врахуйте високосні роки, різну довжину місяців та інші календарні складнощі
  4. Застосуйте коригування за часовим поясом, якщо потрібно

Наприклад, Unix-час 1609459200 представляє п'ятницю, 1 січня 2021 року, 00:00:00 UTC.

Формулу перетворення можна виразити так:

Дата=Unix-Епоха+Часова мітка (в секундах)\text{Дата} = \text{Unix-Епоха} + \text{Часова мітка (в секундах)}

Більшість мов програмування та операційних систем надають вбудовані функції для обробки цього перетворення, абстрагуючи складні календарні обчислення.

Варіанти формату часу

Цей конвертер пропонує два варіанти формату часу:

  1. 24-годинний формат (іноді називається "військовим часом"): години варіюються від 0 до 23, і немає позначення AM/PM. Наприклад, 15:00 представляє 3:00 PM.

  2. 12-годинний формат: години варіюються від 1 до 12, з AM (ante meridiem) для часу з півночі до полудня, і PM (post meridiem) для часу з полудня до півночі. Наприклад, 15:00 у 24-годинному форматі представляє 3:00 PM.

Вибір між цими форматами в основному є питанням регіональної традиції та особистих уподобань:

  • 24-годинний формат зазвичай використовується в більшості країн Європи, Латинської Америки та Азії, а також у наукових, військових і медичних контекстах по всьому світу.
  • 12-годинний формат поширений у США, Канаді, Австралії та деяких інших англомовних країнах для повсякденного використання.

Країни та обмеження

При роботі з Unix-часами важливо бути обізнаним про кілька країн і обмежень:

  1. Негативні часові мітки: вони представляють дати до Unix-Епохи (1 січня 1970 року). Хоча математично це дійсно, деякі системи можуть неправильно обробляти негативні часові мітки.

  2. Проблема року 2038: Unix-часи часто зберігаються як 32-бітні знакові цілі числа, які переповняться 19 січня 2038 року. Після цього моменту системи з 32 бітами не зможуть правильно представляти час, якщо не будуть модифіковані для використання більшого типу цілого числа.

  3. Надзвичайно великі часові мітки: дуже віддалені майбутні дати можуть бути непредставленими в деяких системах або можуть оброблятися непослідовно.

  4. Високосні секунди: Unix-час не враховує високосні секунди, які час від часу додаються до UTC, щоб компенсувати нерегулярний оберт Землі. Це означає, що Unix-час не точно синхронізований з астрономічним часом.

  5. Урахування часового поясу: Unix-часи представляють моменти в UTC. Перетворення на місцевий час вимагає додаткової інформації про часовий пояс.

  6. Літній час: при конвертації часових міток у місцевий час необхідно враховувати складнощі переходів на літній час.

Варіанти використання

Unix-часи використовуються в численних застосунках у комп'ютерних та управлінських даних:

  1. Записи в базі даних: часові мітки зазвичай використовуються для запису моментів створення або зміни записів.

  2. Веб-розробка: заголовки HTTP, куки та механізми кешування часто використовують Unix-часи.

  3. Лог-файли: системні журнали зазвичай записують події з Unix-часами для точного хронологічного порядку.

  4. Системи контролю версій: Git та інші системи контролю версій використовують часові мітки для запису моментів комітів.

  5. Відповіді API: багато веб-API включають часові мітки у своїх відповідях, щоб вказати, коли дані були згенеровані або коли ресурси були востаннє змінені.

  6. Файлові системи: часи створення та зміни файлів часто зберігаються як Unix-часи.

  7. Управління сесіями: веб-додатки використовують часові мітки, щоб визначити, коли сесії користувачів повинні закінчитися.

  8. Аналіз даних: часові мітки забезпечують стандартизований спосіб роботи з тимчасовими даними в аналітичних застосунках.

Альтернативи

Хоча Unix-часи широко використовуються, існують альтернативні формати представлення часу, які можуть бути більш доречними в певних контекстах:

  1. ISO 8601: стандартизований рядковий формат (наприклад, "2021-01-01T00:00:00Z"), який є зрозумілим для людини, зберігаючи при цьому можливість сортування. Він часто віддається перевазі для обміну даними та застосунків, орієнтованих на користувача.

  2. RFC 3339: профіль ISO 8601, що використовується в інтернет-протоколах, з більш суворими вимогами до форматування.

  3. Зрозумілі формати: локалізовані рядки дати (наприклад, "1 січня 2021 року") є більш доречними для прямої взаємодії з користувачем, але менш підходять для обчислень.

  4. Microsoft FILETIME: 64-бітне значення, що представляє кількість інтервалів у 100 наносекунд з 1 січня 1601 року, використовується в системах Windows.

  5. Юліанський день: використовується в астрономії та деяких наукових застосунках, підраховуючи дні з 1 січня 4713 року до нашої ери.

Вибір формату часу залежить від таких факторів, як:

  • Необхідна точність
  • Потреби в зрозумілості для людини
  • Обмеження зберігання
  • Сумісність з існуючими системами
  • Діапазон дат, які потрібно представити

Історія

Концепція Unix-часу виникла з розробки операційної системи Unix у Bell Labs в кінці 1960-х і на початку 1970-х років. Рішення використовувати 1 січня 1970 року як епоху було дещо арбітрарним, але практичним для того часу — воно було достатньо близьким, щоб мінімізувати вимоги до зберігання для дат, що цікавлять, але достатньо далеким у минулому, щоб бути корисним для історичних даних.

Оригінальна реалізація використовувала 32-бітне знакове ціле число для зберігання кількості секунд, що було достатнім для очікуваного терміну служби Unix-систем у той час. Однак це рішення призвело до проблеми року 2038 (іноді називається "Y2K38" або "Unix Millennium Bug"), оскільки 32-бітні знакові цілі числа можуть представляти дати лише до 19 січня 2038 року (03:14:07 UTC).

Коли Unix та подібні до Unix операційні системи набули популярності, Unix-час став де-факто стандартом для представлення часу в обчисленні. Він був прийнятий численними мовами програмування, базами даних і застосунками, поширюючись далеко за межі свого початкового середовища Unix.

Сучасні системи все більше використовують 64-бітні цілі для часових міток, що розширює діапазон представлення приблизно на 292 мільярди років у обох напрямках від епохи, ефективно вирішуючи проблему року 2038. Однак застарілі системи та застосунки можуть все ще бути вразливими.

Простота та корисність Unix-часу забезпечили його тривалу актуальність, незважаючи на розвиток більш складних форматів представлення часу. Він залишається основоположною концепцією в обчисленні, що лежить в основі більшості нашої цифрової інфраструктури.

Приклади коду

Ось приклади того, як перетворити Unix-часи на зрозумілі для людини дати в різних мовах програмування:

1// Конвертація часової мітки в JavaScript
2function convertUnixTimestamp(timestamp, use12Hour = false) {
3  // Створіть новий об'єкт Date (JavaScript використовує мілісекунди)
4  const date = new Date(timestamp * 1000);
5  
6  // Форматування
7  const options = {
8    year: 'numeric',
9    month: 'long',
10    day: 'numeric',
11    weekday: 'long',
12    hour: use12Hour ? 'numeric' : '2-digit',
13    minute: '2-digit',
14    second: '2-digit',
15    hour12: use12Hour
16  };
17  
18  // Перетворення в рядок за допомогою локального форматування
19  return date.toLocaleString(undefined, options);
20}
21
22// Приклад використання
23const timestamp = 1609459200; // 1 січня 2021 року 00:00:00 UTC
24console.log(convertUnixTimestamp(timestamp, false)); // 24-годинний формат
25console.log(convertUnixTimestamp(timestamp, true));  // 12-годинний формат
26

Обробка країн

При роботі з Unix-часами важливо правильно обробляти країни. Ось приклади обробки деяких поширених країн:

1// Обробка країн у JavaScript
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3  // Перевірка на дійсність часової мітки
4  if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
5    return "Недійсна часова мітка";
6  }
7  
8  // Перевірка на негативні часові мітки (дати до 1970)
9  if (timestamp < 0) {
10    // Деякі браузери можуть неправильно обробляти негативні часові мітки
11    // Використовуйте більш надійний підхід для дат до 1970
12    const date = new Date(timestamp * 1000);
13    if (isNaN(date.getTime())) {
14      return "Недійсна дата (до 1970)";
15    }
16  }
17  
18  // Перевірка на проблему Y2K38 (для 32-бітних систем)
19  const maxInt32 = 2147483647; // Максимальне значення для 32-бітного знакового цілого
20  if (timestamp > maxInt32) {
21    // Розгляньте можливість використання BigInt для дуже великих часових міток у сучасному JavaScript
22    console.warn("Часова мітка перевищує обмеження 32-бітного цілого (проблема Y2K38)");
23  }
24  
25  // Продовжити з нормальним перетворенням
26  try {
27    const date = new Date(timestamp * 1000);
28    const options = {
29      year: 'numeric',
30      month: 'long',
31      day: 'numeric',
32      weekday: 'long',
33      hour: use12Hour ? 'numeric' : '2-digit',
34      minute: '2-digit',
35      second: '2-digit',
36      hour12: use12Hour
37    };
38    return date.toLocaleString(undefined, options);
39  } catch (error) {
40    return "Помилка при конвертації часової мітки: " + error.message;
41  }
42}
43

Посилання

  1. "Unix Time." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Unix_time

  2. "Проблема року 2038." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Year_2038_problem

  3. Olson, Arthur David. "Складнощі календарного часу." The Open Group, https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf

  4. "ISO 8601." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/ISO_8601

  5. "RFC 3339: Дата та час в Інтернеті: часові мітки." Internet Engineering Task Force (IETF), https://tools.ietf.org/html/rfc3339

  6. Kernighan, Brian W., and Dennis M. Ritchie. "Мова програмування C." Prentice Hall, 1988.

🔗

Супутні інструменти

Відкрийте для себе більше інструментів, які можуть бути корисними для вашого робочого процесу