【问题标题】:Javascript How to generate a dynamic list of time slotsJavascript如何生成时隙的动态列表
【发布时间】:2021-02-10 12:30:58
【问题描述】:

我想生成一个间隔为 15 分钟的时隙列表。现在,例如 Google 日历,我希望它从上午 12:00 开始,在下午 12:00 之后它应该显示上午 1:00 到上午 11:45。

这是我目前得到的:

let x = 15;
let times = [];
let tt = 0;
let ap = ["AM", "PM"];

for (let i = 0; tt < 24 * 60; i++) {
   let hh = Math.floor(tt / 60); 
   let mm = tt % 60; 
   times[i] = ("0" + (hh % 12)).slice(-2) + ":" + ("0" + mm).slice(-2) + ap[Math.floor(hh / 12)];
   tt = tt + x;
}

console.log(times)

我创建了一个jsfiddle 来查看它。

如前所述,我希望它从上午 12:00 开始,而不是下午 00:00,它应该显示下午 12:00,然后是下午 12:15,然后是下午 12:30 等等。

我怎样才能做到这一点?

【问题讨论】:

  • 开始在您的循环中设置 (i = 0)。 0:00pm 被禁用?比在循环中创建一个简单的条件。
  • 你不是说应该是下午 12:00 而不是下午 00:00?
  • @EganWolf 哦,是的,当然 :-) 我会更新问题...

标签: javascript


【解决方案1】:

你可以检查hh % 12是否等于0:

let x = 15; //minutes interval
let times = []; // time array
let tt = 0; // start time
let ap = ["AM", "PM"]; // AM-PM

//loop to increment the time and push results in array
for (let i = 0; tt < 24 * 60; i++) {
  let hh = Math.floor(tt / 60); // getting hours of day in 0-24 format
  let mm = tt % 60; // getting minutes of the hour in 0-55 format
  let hh12 = hh % 12;
  if( hh12 === 0) {
    hh12 = 12;
  }
  times[i] = ("0" + (hh12)).slice(-2) + ":" + ("0" + mm).slice(-2) + ap[Math.floor(hh / 12)]; // pushing data in array in [00:00 - 12:00 AM/PM format]
  tt = tt + x;
}

console.log(times);

【讨论】:

    【解决方案2】:

    您可以创建一个开始日期(在您希望的任何时间),然后继续以分钟为单位添加您的间隔,直到您达到所需的结束时间(我假设我们将生成一整天的时段):

    let date = new Date(2021, 1, 10, 12, 0, 0);
    const intervalMinutes = 15;
    const dom = date.getDate();
    let times = [];
    do {
        times.push(date.toLocaleTimeString("en-US", { hour: '2-digit', minute: '2-digit' }))
        date = new Date(date.setMinutes(date.getMinutes() + intervalMinutes));
    } while (date.getDate() === dom)
    console.log("Time slots:",times);

    【讨论】:

      猜你喜欢
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多