Получите часы между двумя моментами в moment.js - PullRequest
2 голосов
/ 26 октября 2019

Я пытаюсь так:

let fromTime = '17:00'
let toTime = '20:00'
let a=[]
for(let i=parseInt(fromTime);i<parseInt(toTime);i++){
  a.push({time: i+':00'})
}
console.log(a)

Работает. Но это лучший способ сделать это?

Является ли лучший способ использования момента js?

Ответы [ 2 ]

2 голосов
/ 26 октября 2019

Вроде, но вы можете получить этот результат намного лучше. сначала конвертируйте ваше время в moment.js object, затем получите разницу между fromTime и toTime, затем получите diff как часы и, наконец, добавьте один час для разницы в цикле.

let fromTime = moment('17:00', 'HH:mm');
let toTime = moment('20:00', 'HH:mm');
let duration = moment.duration(toTime.diff(fromTime));
let diff = duration.hours();
let array = [];

for (i = 0; diff > i; i++) {
  let result = moment(fromTime).add(i, 'hours').format('HH:mm')
  array.push({
    result
  })
}

console.log(array)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.2.1/moment.min.js"></script>

С одной стороны, имеет смысл получить точные часы между from и to разами, поэтому вы можете установить i=1 только для получения:

[
  {
    "result": "18:00"
  },
  {
    "result": "19:00"
  }
]
1 голос
/ 26 октября 2019

Вместо js я бы порекомендовал использовать библиотеку js-joda.

import {LocalTime } from '@js-joda/core'

const start = LocalTime.parse("10:00")
const end = LocalTime.parse("20:30")

const times = [];

for (let time = start; time.compareTo(end) < 0; time = time.plusHours(1) ) {
  times.push(time.toString());
}

console.log(times);

https://js -joda.github.io / js-joda / manual / LocalTime.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...