首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建带断点的时隙

创建带断点的时隙
EN

Stack Overflow用户
提问于 2021-07-06 17:08:56
回答 1查看 40关注 0票数 0

我正在编写一个日历,它可以根据时隙设置可用时间和中断时间。

我有两个输入数据

  1. 基本开始和结束时间。示例:

{startTime:'07:00',endTime '21:00'}

  1. 的断续期。示例:

{startTime:'08:00',结束时间:‘08:30’},{startTime:'10:00',结束时间:‘10:30’},{startTime:'12:00',结束时间:‘13:00’},{startTime:'15:00',结束时间:‘15:30’},{startTime:'18:00',

我需要细分的时间插槽取决于基本的开始和结束时间和断续期。

给出上面输入的数据,我想得到。

代码语言:javascript
复制
   [{startTime: '07:00', endTime: '07:59'}, 
    {startTime: '08:31', endTime: '09:59'},
    {startTime: '10:31', endTime: '11:59'},
    {startTime: '13:01', endTime: '14:59'},
    {startTime: '15:31', endTime: '17:59'},
    {startTime: '19:01', endTime: '21:00'}]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-06 18:11:16

约简函数帮助管理数据转换。我使用一个单独的函数来增加/减去时间。

代码语言:javascript
复制
function getTimeFrom(time, diff) {
  time = time.split(":");
  let h = +time[0], m = +time[1]
  if (time[1] == "00" && diff < 0) {
    m = 60 + diff;
    h -= 1;
  } else m += diff;
  return ("0" + h).slice(-2) + ":" + ("0" + m).slice(-2)
}

let worktime = [{startTime: '07:00', endTime: '21:00' }], breaktime = [{startTime: '08:00', endTime:'08:30'},
 {startTime: '10:00', endTime:'10:30'},
 {startTime: '12:00', endTime:'13:00'},
 {startTime: '15:00', endTime:'15:30'},
 {startTime: '18:00', endTime:'19:00'}]

let workdetail = breaktime.reduce((b, a, i) => {
  if (i === 0) b[0].finalEndTime = b[0].endTime // save the value
  b[i].endTime = getTimeFrom(a.startTime, -1)
  a.startTime = getTimeFrom(a.endTime, 1)
  if (i === breaktime.length - 1) {
    a.endTime = b[0].finalEndTime; // our final end time for the day
    delete b[0].finalEndTime // remove it
  }
  b.push(a);
  return b;
}, worktime)

console.log(workdetail)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68274756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档