Длительность момента совершенно неверна - PullRequest
4 голосов
/ 03 июня 2019

Я использую этот точный код, а momentjs получает абсолютно неверное количество часов:

   const minutes = 2100
   const duration = moment.duration(minutes, 'minutes')
   const inHours = duration.hours()

   console.log(inHours)

Ответ явно 35 , но он просто говорит 11 .

На самом деле я не могу предоставить здесь намного больше контекста, поскольку это действительно что-то очень простое.

Кто-нибудь может увидеть, где это может пойти не так?

Ответы [ 2 ]

7 голосов
/ 03 июня 2019

Длительность момента преобразует его в days, hours, minutes, seconds

2100 минут = 35 часов = 24 + 11 часов = 1 день + 11 часов

Если вы введете duration.days(), вы получите 1.

Если вы хотите указать продолжительность в часах, вы можете сделать: duration.asHours()

Гораздо более оптимизированный по производительности код нового поколения, который также является поточно-ориентированным для этого, будет: var hours = 2100/60

2 голосов
/ 03 июня 2019

Вы можете напрямую получить часы, используя .asHours()

const minutes = 2100
const duration = moment.duration(minutes, 'minutes').asHours()
console.log(duration)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
...