期望得到的是从当前时间到昨天的中间时间的一小时间隔
就是这样
例如:如果现在是03:34
所以我想得到这个
var durations = [
{from:03:00, to:03:34},
{from:02:00, to:03:00},
{from:01:00, to:02:00},
{from:00:00, to:01:00}
]
上例中的SO为03:34的值是当前时间
到目前为止,我已经能够通过获得第一段
{from:moment().startOf('hour'), to:moment()}
现在,人们陷入了如何将其他时长分开的问题,每个时长相差1小时
所以它就像
let hours_from_midnight = moment.duration(end.diff(moment().startOf('day'))).asHours();
但是现在我该如何继续使用从午夜开始的小时数来划分下一个持续时间并实现所需的持续时间
答案 0 :(得分:1)
您需要做的是继续减去一个小时并克隆日期,因为所有方法都会改变现有对象:
function periods(initialTime) {
// our lower bound
const midnight = initialTime.clone().startOf("day");
// our current period start
const periodStart = initialTime.clone().startOf("hour");
const periods = [];
if (!(periodStart.isSame(initialTime))) {
// only add the last period if it isn't empty
periods.push({ start: periodStart.clone(), end: initialTime });
}
while (periodStart.isAfter(midnight)) {
// the last start is our new end
const to = periodStart.clone();
// our new start is one hour earlier
const from = periodStart.subtract(1, "hour").clone();
periods.push({
from,
to
});
}
return periods;
}
console.log(periods(moment("03:34", "HH:mm")));
console.log(periods(moment("18:00", "HH:mm")));