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

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

Конвертер Unix Timestamp

El timestamp Unix és el nombre de segons des de l'1 de gener de 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.

🔗

Пов'язані Інструменти

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

Перетворювач одиниць часу: роки, дні, години, хвилини, секунди

Спробуйте цей інструмент

Форматувач та Beautifier JSON: Красивий вивід JSON з відступами

Спробуйте цей інструмент

Конвертер числових систем: Конвертуйте двійкові, шістнадцяткові, десяткові та інші

Спробуйте цей інструмент

Калькулятор інтервалу часу: Визначте час між двома датами

Спробуйте цей інструмент

Конвертер двійкових та десяткових чисел: Перетворення між системами числення

Спробуйте цей інструмент

Калькулятор відсотка безвідмовної роботи сервісу

Спробуйте цей інструмент

Конвертер крапель у мілілітри: медичні та наукові вимірювання

Спробуйте цей інструмент

Калькулятор віку собак: перетворення років собаки на людські роки

Спробуйте цей інструмент

Конвертер дюймів у дроби: десяткові дюйми в дробові

Спробуйте цей інструмент

Універсальний конвертер довжини: метри, фути, дюйми та інше

Спробуйте цей інструмент