Node.js конвертирует строку даты в метку времени Unix

1

Я пытаюсь преобразовать строку Date в временную метку unix в Node.js.

Мой код ниже отлично работает на моем клиенте, но когда я запускаю его на своем сервере, я получаю сообщение об ошибке:

(node: 19260) UnhandledPromiseRejectionWarning: Отказ от необработанного обещания (id отклонения: 1): TypeError: input.substring не является функцией

Мой код:

function dateParser(input) {
    // function is passed a date and parses it to create a unix timestamp

    // removing the '.000' from input
    let finalDate = input.substring(0, input.length - 4);
    return new Date(finalDate.split(' ').join('T')).getTime();
}

Пример моего ввода будет 2017-09-15 00: 00: 00.000

Итак, что дает, почему это работает на моем клиенте, но не в узле, и как я буду дублировать функциональность в узле?

  • 0
    Как вызывается dateParser() и что ему передается?
  • 0
    Не могли бы вы console.log(typeof input) ?
Показать ещё 2 комментария
Теги:
unix-timestamp

3 ответа

6
Лучший ответ

Создайте объект даты из строки ввода dateTime, а затем используйте getTime() и разделите результат на 1000, чтобы получить getTime() времени UNIX.

var unixTimestamp = Math.round(new Date("2017-09-15 00:00:00.000").getTime()/1000);
console.log(unixTimestamp);
  • 0
    Для любого, кто конвертирует текущее время в метку времени Unix, вы должны использовать Math.floor , иначе вы будете генерировать время очень немного в будущем. На самом деле, я думаю, что Math.floor всегда более уместен, так как обычно желательно отказаться от точности.
2

Я рекомендую использовать momentjs для обработки дат. Используя momentjs, вы можете сделать:

moment().unix(); // Gives UNIX timestamp

Если у вас уже есть дата и вы хотите получить отметку времени UNIX относительно этой даты, вы можете сделать следующее:

moment("2017-09-15 00:00:00.000").unix(); // I have passed the date that will be your input 
// Gives out 1505413800

Он становится очень продуктивным при обработке даты/времени с использованием импульсов.

0

Временная метка Unix - это количество секунд с определенной даты. Функция Javascript getTime() возвращает количество миллисекунд с той же конкретной даты до указанной вами даты.

Итак, если вы разделите результат своей функции на номер 1000, вы получите отметку времени Unix и конвертируете ее с миллисекунд в секунды. Не забывайте игнорировать десятичные знаки.

Сообщение об ошибке, которое вы получаете, связано с тем, что значение ввода не является строкой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню