使用时刻js显示基于开始日期和结束日期的时间间隔

JSN

我想显示给定startTime,endTime和interval的持续时间数组。

let value = {
  interval: '00:30:00',
  startTime: '03:00:00',
  endTime: '20:00:00'
};

样本输出必须是具有给定间隔的持续时间数组

-startTime减去时间间隔,因此新 startTime = 02:30:00

[0] => '02:30 am - 03:00 am'
[1] => '03:00 am - 03:30 am'
[2] => '03:30 am - 04:00 am'
[3] => '04:00 am - 04:30 am'
...... 
[n] => '07:30 pm - 08:00 pm'

这是我的职能

function showTimeIntervals(value) {
  let result = value.interval.split(","); 
  let start = "";
  let timeNotation = '';
  let time = '';
  for(let i in result) {
    let hr = moment(result[i], 'HH:mm').format('HH');
    let min = moment(result[i], 'HH:mm').format('mm');
    hr = (hr != 0) ? parseInt(hr, 10) : '';
    min = (min != 0) ? parseInt(min, 10) : '';
    if(hr != 0) {
      time = hr;
      timeNotation = 'hour';
      start = moment(value.startTime, 'hh:mm a').subtract(hr, 'hour');
    } else {
      time = min;
      timeNotation = 'minutes';
      start = moment(value.startTime, 'hh:mm a').subtract(min, 'minutes');
    }
  }
  var end = moment(value.endTime, 'hh:mm a');
  if(end < start)
    end = end.add(1, 'd');
  var finalResult = [];
  var current = moment(start);
  while (current <= end) {
    finalResult.push(current.format('hh:mm a'));
    current.add(time, timeNotation);
  }
  return finalResult;
}

但这给了个人时间而不是持续时间

 [0] => '02:30 am'
 [1] => '03:00 am'
 [2] => '03:30 am'
 [3] => '04:00 am'
 ......
 [n] => '08:00 pm'

这是一个小提琴-> https://jsfiddle.net/zm368de9/

js可以立即做到这一点的最简单方法吗?

Artyom

这是另一个使用moment.js生成间隔的选项。

let value = {
  interval: '00:30:00',
  startTime: '03:00:00',
  endTime: '20:00:00'
};

var inputDataFormat = "HH:mm:ss";
var outputFormat = "HH:mm a";

var tmp = moment(value.interval, inputDataFormat);
var dif = tmp - moment().startOf("day");

var startIntervalTime = moment(value.startTime, inputDataFormat).add(-dif, "ms");
var endIntervalTime = moment(value.startTime, inputDataFormat);
var finishTime = moment(value.endTime, inputDataFormat);

function prepareIntervals() {
  var intervals = [];
  
  while(startIntervalTime < finishTime) {
    var format = startIntervalTime.format(outputFormat) + " - " + endIntervalTime.format(outputFormat);
    intervals.push(format);
    startIntervalTime.add(dif, "ms");
    endIntervalTime.add(dif, "ms");
  }
  
  return intervals;
}

console.dir(prepareIntervals());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用时刻迭代周数,周的开始/结束日期

如何使用时刻迭代周数,周的开始/结束日期

使用时刻获取基于周数和天数的日期

如何合并开始日期和结束日期而没有时间间隔?

使用 Jquery Datepicker 基于开始日期的结束日期在通过类调用时不会动态工作

如何根据开始日期和结束日期多次显示记录,包括天数间隔

使用 HighCharts 在时间序列 LineChart 中显示开始和结束日期范围

基于行中值的“开始”和“结束”日期

区分ID与开始和结束日期时间

如何使用日期时间本地输入更新我的开始日期时间和结束时间?

基于开始日期和结束日期的 Tableau 体积计算

如何基于R中的持续时间(显示开始和结束时间以及以小时和分钟为单位的持续时间)来计算最长日期

使用Groupby对行进行分组,并转换开始日期时间和结束日期时间列的日期和时间

通过使用当前日期时间的开始和结束日期时间更改全日历事件颜色

我有开始日期时间和结束日期时间如何在 iOS Swift 4 中显示结束销售

在Google表格中使用Google脚本基于图表“开始日期”和“结束日期”的颜色单元

是否有保存开始日期和结束日期时间的类型?

从时间戳范围获取开始日期和结束日期

从开始-结束日期和时间(UTC)找出日期范围

如何使用Sequelize获取介于两列之间的日期/时间,包括开始和结束日期

使用时间和日期变量查找时间间隔

Woocommerce:仅显示开始日期和结束日期之间的产品

合并记录以显示开始日期和结束日期SQL

在R中,使用diff()后查找每个间隔的开始和结束日期

使用开始和结束日期绘制线条

多个日期行以间隔开始日期和结束日期在 df 中转入 2 列

从日期时间戳记获取开始和结束时间

如何使用时刻获取日期?

如何使用Azure CRON Expression安排时间间隔并在特定的日期和时间开始