метод moment api для вычисления сегодняшнего времени в миллисекундах

#javascript #momentjs

#javascript #momentjs

Вопрос:

 var timeArr = moment().format('HH:mm').split(':');
var timeInMilliseconds = (timeArr[0] * 3600000)   (timeArr[1] * 60000);
  

Это мое текущее решение. Я бы предпочел использовать moment api для вычисления сегодняшнего времени (время с 12:00 утра сегодня) в миллисекундах.

Мой код возвращает сегодняшнее время в миллисекундах. Мне нужно вызвать другую функцию за миллисекунды. Я не могу использовать эпоху. Мне нужно, чтобы сегодняшнее время было отформатировано в миллисекундах.

Примеры:

 9:00am = 3.24e 7 milliseconds 
9:00pm = 6.84e 7 milliseconds.
  

Ответ №1:

Вы можете попробовать следующее:

 var moment = require("moment");
// Compute the time in milliseconds assuming it's 1AM now
moment("1:00","HH:mm")-moment("00:00","HH:mm")
// 3600000


// Compute the time in milliseconds assuming it's 9AM now
moment("9:00","HH:mm")-moment("00:00","HH:mm")
// 32400000

// Compute the time in milliseconds assuming it's 9PM now
moment("21:00","HH:mm")-moment("00:00","HH:mm")
// 75600000

// For current time
moment()-moment("00:00","HH:mm")
  

Комментарии:

1. // Для текущего времени moment()-moment(«00:00», «ЧЧ: мм»)

2. // Для текущего времени moment()-moment(«00:00», «ЧЧ: мм»)

3. Idk как удалить мои комментарии ^ но, похоже, это работает, я просто не понимаю, почему. Прочитайте документы и не можете найти.

Ответ №2:

Вы можете использовать следующие функции:

  • moment() — это дает вам текущий момент («сейчас»)
  • startOf('day') — это дает вам первый момент дня
  • diff — это вычисляет разницу между двумя моментами

Собираем это вместе:

 moment().diff(moment().startOf('day'))
  

Единицами измерения по умолчанию являются миллисекунды, поэтому вам не нужно их указывать.

Это дает вам миллисекунды, прошедшие с начала дня. Однако обратите внимание, что в некоторых часовых поясах (например, в Бразилии) переход на летнее время происходит прямо в полночь — в такие дни часы идут с 23:59:59 до 01:00:00, поэтому первый момент дня может быть не таким.полночь! В этой ситуации значения, возвращаемые вышеупомянутой функцией, могут отличаться на час от того, что вы ожидаете. Это действительно время возврата с начала дня, просто не время с «полуночи».

Чтобы компенсировать эту возможность, вместо этого вы можете сделать следующее:

 moment().utcOffset(0, true).diff(moment().utcOffset(0, true).startOf('day'))
  

utcOffset(0, true) Переключится в режим UTC с сохранением местного времени без изменений. Это немного более запутанно, чем в первом примере, но выполняет свою работу, потому что UTC никогда не испытывает переходов в летнее время.