矩范围:需要将一天分为15分钟

Mar*_*arc 1 javascript momentjs

目前,我只能将一天划分为1个小时。但是我需要15分钟的步幅。

矩范围文档

这是我目前的代码:

function iterateOverDayByIntervalOfHours(inputJSON){
    var day = getDayFromFromJSON(inputJSON);

    var start = new Date("2016-05-04T00:00:00.000Z");
    var end   = new Date("2016-05-04T23:59:59.999Z");

    var range = moment.range(start, end);
    var slices = {}
    range.by( 'hours', function(moment) {    
        console.log(moment);
        slices["moment"] = moment
        console.log("slices: "+ slices["moment"]);
        var ROTsAccumulatedForInterval =  getAccumulatedROTForTimeIntervall(range);
        var NumberOfFlightsForInterval = getNumberOfFlightsForTimeIntervall(range);
    });
    console.log(slices["moment"]);
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Shi*_*son 6

这是使用moment带有moment-range扩展名的lib的另一种方式:

const day_start = moment().startOf('day').hours(7); // 7 am
const day_end   = moment().startOf('day').hours(22) // 10 pm
const day = moment.range(day_start, day_end)
const time_slots = Array.from(day.by('minutes', {step: 30}))
Run Code Online (Sandbox Code Playgroud)

Array.from(day.by('minutes', {step: 30}))
Run Code Online (Sandbox Code Playgroud)

您可以更改'minutes'hours, days, weeksstep有多少minutes/hours/days要由大块。

返回值将是

[ moment("2017-10-20T07:00:00.000"),
  moment("2017-10-20T07:30:00.000"),
  moment("2017-10-20T08:00:00.000"),
  moment("2017-10-20T08:30:00.000"),
  moment("2017-10-20T09:00:00.000"),
  moment("2017-10-20T09:30:00.000"),
  ...
  moment("2017-10-20T19:30:00.000"),
  moment("2017-10-20T20:00:00.000"),
  moment("2017-10-20T20:30:00.000"),
  moment("2017-10-20T21:00:00.000"),
  moment("2017-10-20T21:30:00.000"),
  moment("2017-10-20T22:00:00.000") ]
Run Code Online (Sandbox Code Playgroud)


Arg*_*gee 5

这不使用 moment 并且尚未在您的函数中实现,但这就是我尝试获取 15 分钟块对象的方式。我希望,这就是你正在寻找的。

var start = new Date("2016-05-04T00:00:00.000Z");
var end = new Date("2016-05-04T23:59:59.999Z");

var slices = {};
var count = 0;
var moment;

while (end >= start) {
  start = new Date(start.getTime() + (15 * 60 * 1000));
  slices[count] = start;
  count++;
}
console.log(slices);
Run Code Online (Sandbox Code Playgroud)