Время эпохи, также известное как время Unix или время POSIX, представляет собой систему представления временных меток в виде одного целочисленного значения, подсчитывающего количество секунд, прошедших с момента определенной контрольной точки, называемой «эпохой». Эта контрольная точка обычно определяется как 00:00:00 всемирного координированного времени (UTC) 1 января 1970 года.
Время эпохи обычно используется в различных приложениях для отметки времени, измерения временных интервалов и выполнения вычислений, связанных со временем.
В этом блоге мы узнаем, как использовать время эпохи для расчета местного времени, например даты и времени того места, где вы живете, и конвертировать его в стандарт времени UTC с помощью JavaScript.
Как извлечь текущую эпоху или время UNIX?
В JavaScript вы можете получить время текущей эпохи (также известное как временная метка Unix), используя объект Date
. Вот пример того, как получить время текущей эпохи с помощью JavaScript:
// Get the current epoch time in milliseconds const currentEpochTime = Date.now(); console.log(currentEpochTime); // Output 1692274374768 // It will be different when you run it
Этот фрагмент кода выведет количество миллисекунд, прошедших с эпохи Unix. Вы также можете преобразовать это время в секунды, разделив миллисекунды на 1000:
// Get the current epoch time in seconds const currentEpochTimeInSeconds = Math.floor(Date.now() / 1000); console.log(currentEpochTimeInSeconds); // Output 1692274418 // It will be different when you run it
API обычно передают время эпохи в секундах, поэтому вам необходимо сначала преобразовать время секунды эпохи в миллисекунды.
Теперь мы извлечем местную дату и время (где вы живете или где установлено ваше системное время) из временной метки Epoch или UNIX:
// Get the current epoch time in milliseconds const currentEpochTime = Date.now(); // Create a Date object from the local date and time in milliseconds var localDate = new Date(currentLocalDateMillis); // Format the local date and time as a string (using the local time zone) var localDateTimeString = localDate.toLocaleString(); // Using default options console.log("Local Date and Time:", localDateTimeString); // Output 8/17/2023, 8:52:55 PM
В приведенном выше фрагменте кода мы извлекли дату и время, но если мы хотим извлечь только дату или время, мы можем использовать следующие Date
методы:
getFullYear()
Получить год в виде четырехзначного числа (гггг)getMonth()
Получить месяц в виде числа (0–11)getDate()
Получить день в виде числа (1–31).getDay()
Получить день недели в виде числа (0–6).getHours()
Получить час (0–23)getMinutes()
Получить минуту (0-59)getSeconds()
Получить второе место (0-59)getMilliseconds()
Получить миллисекунду (0–999)getTime()
Получить время (миллисекунды с 1 января 1970 г.)
Теперь мы будем использовать вышеуказанный метод для извлечения текущего времени из эпохи эпохи или времени UNIX:
function convertEpochToLocalTime(epochTimestamp) { const date = new Date(epochTimestamp * 1000); // Multiply by 1000 to convert seconds to milliseconds const hours = date.getHours(); const minutes = date.getMinutes(); const seconds = date.getSeconds(); let formattedHours = hours % 12; if (formattedHours === 0) { formattedHours = 12; // 12:00 AM or 12:00 PM } const amOrPm = hours < 12 ? 'AM' : 'PM'; const formattedTime = `${formattedHours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')} ${amOrPm}`; return formattedTime; } const epochTimestamp = 1661870592; const formattedTime = convertEpochToLocalTime(epochTimestamp); console.log(formattedTime);
Извлечение времени UTC из времени Epoch или UNIX
Чтобы преобразовать временную метку эпохи во время UTC в JavaScript, вы можете использовать объект Date
. Вот как вы можете это сделать:
const epochTimestamp = 1628899200; // Replace this with your epoch timestamp // Convert epoch timestamp to UTC date and time const utcDate = new Date(epochTimestamp * 1000); console.log("UTC Time:", utcDate.toUTCString());
В этом примере 1628899200
— это временная метка эпохи, представляющая определенный момент времени. Объект Date
в JavaScript работает с миллисекундами, поэтому вам необходимо умножить временную метку эпохи на 1000, чтобы преобразовать ее из секунд в миллисекунды, прежде чем создавать объект Date
.
Метод toUTCString()
объекта Date
используется для получения строкового представления даты и времени в формате UTC.
Теперь, если мы хотим извлечь дату или время, мы можем использовать следующие Date
методы:
getUTCDate()
Возвращает дату в формате UTC.getUTCFullYear()
Возвращает год по всемирному координированному времени.getUTCMonth()
Возвращает месяц по всемирному координированному времени.getUTCDay()
Возвращает день по всемирному координированному времени.getUTCHours()
Возвращает часы UTC.getUTCMinutes()
Возвращает минуты по всемирному координированному времени.getUTCSeconds()
Возвращает секунды в формате UTC.getUTCMilliseconds()
Возвращает миллисекунды в формате UTC.
Теперь мы будем использовать вышеуказанный метод для извлечения текущего времени из эпохи эпохи или времени UNIX:
const epochTimestamp = 1628899200; // Replace this with your epoch timestamp // Convert epoch timestamp to UTC date and time const utcDate = new Date(epochTimestamp * 1000); // Get individual components of the UTC date const hours = utcDate.getUTCHours(); const minutes = utcDate.getUTCMinutes(); const seconds = utcDate.getUTCSeconds(); // Convert hours to 12-hour format const twelveHourFormat = hours % 12 || 12; const ampm = hours < 12 ? "AM" : "PM"; // Construct the formatted time string const formattedTime = `${twelveHourFormat}:${minutes}:${seconds} ${ampm}`; console.log("UTC Time (12-hour format):", formattedTime);
Заключение
Время эпохи служит числовым представлением времени путем подсчета секунд (или миллисекунд), прошедших с заранее определенной начальной точки, известной как эпоха Unix, часто устанавливаемой на 1 января 1970 года. Оно предлагает стандартизированный подход для компьютеров к управлению временем, облегчая сравнения и расчеты в различных системах и местах.