#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;