gpt4 book ai didi

javascript - 使用moment js根据开始和结束日期以及间隔显示持续时间

转载 作者:行者123 更新时间:2023-11-28 13:03:42 24 4
gpt4 key购买 nike

我想显示给定开始时间、结束时间和间隔的持续时间数组。

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'

这是一个 fiddle -> https://jsfiddle.net/zm368de9/

a moment js 有没有最简单的方法可以做到这一点?

最佳答案

这是使用 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>

关于javascript - 使用moment js根据开始和结束日期以及间隔显示持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48276306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com