Преобразовать текущее время в миллисекунды, используя момент - PullRequest
0 голосов
/ 22 ноября 2018

Предположим, у меня есть это время

'2018-08-03T15:53:57.000Z'

Мне нужно преобразовать только часть времени в milliseconds

Я пробовал это, но не сработало и выдает ошибку

moment.utc("2018-08-03T15:53:57.000Z").format('HH:mm:ss').milliseconds()

Ошибка

TypeError: (0 , _moment2.default)(...).format(...).milliseconds is not a function

Может кто-нибудь помочь, как я могу преобразовать только время в миллисекунды?

Спасибо !!!

Ответы [ 4 ]

0 голосов
/ 22 ноября 2018

Я добавлю свой ответ, если я его неправильно понял, тогда кто-то может прокомментировать.

Если я отправлю new Date().toISOString() кому-то в другом часовом поясе, тогда время для этого человека будет другим.Если я попрошу этого человека позвонить по скайпу в 13:00 по его времени, это может означать, что это 18:00 по местному времени.

Так что, если человек, отправляющий мне строку даты, из Великобритании и отправляет мне ...T13:00.000Z Для меня это означает 18:00.

Вот как вы можете правильно получить время в миллисекундах от вашей полуночи даты, конвертированной в ваше местное время:

const date = new Date(2007, 1, 1, 0, 0, 2).toISOString();
console.log('date:',date);
console.log('date in your local time:',new Date(date).toString());
const millisecondsFromMidNight = (date) => {
  var dateObject = new Date(date);
  return (
    dateObject.getTime() -
    new Date(
      dateObject.getFullYear(),
      dateObject.getMonth(),
      dateObject.getDate(),
      0,
      0,
      0,
      0,
    ).getTime()
  );
};
console.log(millisecondsFromMidNight(date));

Пример, в котором DST вступает в силу:

var minutesFromMidnight = (date) => {
  var dateObject = new Date(date);
  console.log('date:', date);
  console.log(
    'date in your local time:',
    dateObject.toString(),
  );
  return (
    dateObject.getTime() -
    new Date(
      dateObject.getFullYear(),
      dateObject.getMonth(),
      dateObject.getDate(),
      0,
      0,
      0,
      0,
    ).getTime()
  );
};

console.log(
  minutesFromMidnight('2018-10-28T00:59:00.000Z') / 60000,
);
console.log(
  minutesFromMidnight('2018-10-28T01:01:00.000Z') / 60000,
);
0 голосов
/ 22 ноября 2018

Нет необходимости использовать момент, чтобы сделать это.Строка даты может быть достаточно проанализирована ванильным JS.

var date = new Date('2018-08-03T15:53:57.000Z');

И чтобы получить метку времени (в миллисекундах) этой даты;

var millis = date.getTime();

И, так как в 86400 секунддень (24 * 60 * 60) составляет 86 400 000 миллисекунд, и мы можем использовать остаток после деления на это число, чтобы получить количество миллисекунд, которое представляет временная часть.

var millisToday = millis % 8640000;

ОБНОВЛЕНИЕ

Теперь используется getTime() вместо valueOf(), поскольку это «правильный» способ получить метку времени объекта Date.

0 голосов
/ 22 ноября 2018

Функция - момент (). Миллисекунды ()

Не форматировать (). Миллисекунды

0 голосов
/ 22 ноября 2018

Просто сделайте это, если хотите получить миллисекунды:

const ms = moment.utc("2018-08-03T15:53:57.000Z").valueOf()
...