簡體   English   中英

Moment-Range:需要將一天分成 15 分鍾的片段

[英]Moment-Range: Need to divide day into 15 minute slices

目前我只能將一天划分為 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"]);
}

有什么想法嗎?

這是使用帶有moment-range擴展的moment庫的另一種方法:

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}))

Array.from(day.by('minutes', {step: 30}))

您可以將'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") ]

這不使用 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);

為時已晚,但可能會有所幫助,我正在執行以下操作以將一天划分為小時日期范圍。

使用 lodash 和 moment

const generateDayHours = (x = 24) => {
  const hoursArr = [];
  _.times(x, (i) => {
    hoursArr.push({
      fromDate: moment().startOf('day').add(x - (i + 1), 'hour').startOf('hour'),
      toDate: moment().startOf('day').add(x - (i + 1), 'hour').endOf('hour')
    });
  });
  return hoursArr;
};

jsbin進行測試

你也可以使用這樣的東西。

// Take a starting point
const start = moment('00:00:00', 'HH:mm:ss');

// Take a end point
const end = moment('23:59:59', 'HH:mm:ss');
const timeSeries = [];

while (start.isSameOrBefore(end)) {
  // add 15 minutes to the starting point
  timeSeries.push(start.add(15, 'm').format('HH:mm'));
}

console.log(timeSeries);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM