简体   繁体   English

Javascript 每半小时创建 arrays 个时间对

[英]Javascript create arrays of time pairs every half hour

i should generate an array of strings that maps time pairs to me every half hour, starting from a departure time like 1pm and an end time like 11pm, that i can dynamically create an array of this type:我应该生成一个字符串数组,每半小时将时间对映射给我,从下午 1 点这样的出发时间开始,到晚上 11 点这样的结束时间,这样我就可以动态创建这种类型的数组:

return ['13: 00-13: 30 ',' 13: 30-14: 00 ',' 14: 00-14: 30 ',' 14: 30-15: 00 ',' 15: 00-15: 30 ', '20: 00-20: 30', '20: 30-21: 00', '21: 00-21: 30', '21: 30-22: 00', '22: 00-22: 30 '] 

I had found an approach but was unable to adapt it to my needs:我找到了一种方法,但无法根据我的需要进行调整:

function getTimes(start, end) {
    start = parseInt(start) * 2 + (+start.slice(-2) > 0);
    end = parseInt(end) * 2 + (+end.slice(-2) > 0) + 1;
    return Array.from({length: end - start}, (_, i) =>
        (((i + start) >> 1) + ":" + ((i + start)%2*3) + "0").replace(/^\d:/, "0$&"));
};
console.log(getTimes("13:00", "24:00"));

I get an output like this, which is not good:我得到这样的 output,这不好:

[ '13:00',
  '13:30',
  '14:00',
  '14:30',
  '15:00',
  '15:30',
  '16:00',
  '16:30',
  '17:00',
  '17:30',
  '18:00',
  '18:30',
  '19:00',
  '19:30',
  '20:00',
  '20:30',
  '21:00',
  '21:30',
  '22:00',
  '22:30',
  '23:00',
  '23:30',
  '24:00' ]

I'd just track everything in minutes, with two helpers for conversion between strings and minutes:我会在几分钟内跟踪所有内容,并使用两个助手在字符串和分钟之间进行转换:

 function parseTime(timeString) { let time = timeString.split(":"); return time[0] * 60 + time[1] * 1; } function timeString(time) { let h = Math.floor(time / 60); if (h > 23) h -= 24; let m = time % 60; return h.toString().padStart(2, "0") + ":" + m.toString().padStart(2, "0"); } function getTimes(start, end) { start = parseTime(start); end = parseTime(end); if (end < start) end += 24 * 60; let result = []; while (start < end) { result.push(timeString(start) + "-" + timeString(start + 30)); start += 30; } return result; } console.log(getTimes("13:00", "24:00"));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM