превратите строки часов и минут в эпоху (метка времени unix)

#javascript #node.js #unix #unix-timestamp #epoch

Вопрос:

У меня в таблице БД есть данные, hour minute которые вводит пользователь. таким образом, это может быть час=18, а минута=24. Мне нужно преобразовать эти два — в основном в 18:24 epoch .

Я пытался сделать:

 let hour = "20"
  let minute = "55"

let myTime = hour   ":"   minute
     const timestamp2 = epoch(myTime)
 

но это Нэн. Есть какие-нибудь идеи, возможно ли это вообще?

Ответ №1:

Часа и минуты недостаточно, чтобы получить метку времени unix, вам также нужны год,месяц,день,секунды и миллисекунды. В любом случае, если вы намерены использовать текущую дату в качестве ссылки для определения этих значений, вы можете сделать следующее:

 const hour = "20";
const minute = "55";
const date = new Date();
date.setHours(hour);
date.setMinutes(minute);
const timestamp = date.getTime();
 

Ответ №2:

Время эпохи-это количество миллисекунд с или до 01 января 1970 года 00:00:00 UTC (что является эпохой Unix, нулевой точкой ее календаря).

Время, например 20:55, без даты не привязано и поэтому не может быть преобразовано во время эпохи.

Вы можете преобразовать его в смещение от начала дня в миллисекундах, получить время эпохи для определенного дня в начале дня и сложить два значения вместе.

 function offsetFromStartOfDayInMilliseconds( h = 0 , m = 0 , s = 0 , ms = 0 ) {
  let offset = 0;
  
  offset  = h  * MS_PER_HR;
  offset  = m  * MS_PER_MIN;
  offset  = s  * MS_PER_SEC;
  offset  = ms * MS_PER_MS;

  return offset;
}
const MS_PER_MS = 1;
const MS_PER_SEC = 1000;
const MS_PER_MIN = 60 * MS_PER_SEC;
const MS_PER_HOUR = 60 * MS_PER_MIN;