gpt4 book ai didi

javascript - 计算对象中属性的总持续时间

转载 作者:行者123 更新时间:2023-11-29 20:54:08 25 4
gpt4 key购买 nike

我在数组 [0] 中有以下对象:

var arr[0]=
[
{
"startTime": "1300",
"endTime": "1700",
"eventName": "Sleep",
"end_datetime": "20180510M0100",
"start_datetime": "20180509M2300",
},
{
"startTime": "0800",
"endTime": "1200",
"eventName": "Breakfast",
"end_datetime": "20180507M1200",
"start_datetime": "20180507M0800",
},
{
"startTime": "1300",
"endTime": "1400",
"eventName": "Lesson",
"end_datetime": "20180507M1400",
"start_datetime": "20180507M1300",
},
{
"startTime": "1300",
"endTime": "1700",
"eventName": "Ski",
"end_datetime": "20180511M170000",
"start_datetime": "20180511M130000",
}
]

end_datatime 的格式为 yyyymmddMhhmmss(前 4 位数字是年,后面是月、日、分隔符“M”、小时、分钟和秒。

我想计算所有事件的总持续时间? (总共11个小时,就是2个小时的 sleep +4个小时的早餐+1个小时的类(class)+4个小时的滑雪)

最佳答案

考虑到跨越多天的时间,这是一种可能的实现方式:

const input = [{
"startTime": "1300",
"endTime": "1700",
"eventName": "Sleep",
"end_datetime": "20180510M0100",
"start_datetime": "20180509M2300",
},
{
"startTime": "0800",
"endTime": "1200",
"eventName": "Breakfast",
"end_datetime": "20180507M1200",
"start_datetime": "20180507M0800",
},
{
"startTime": "1300",
"endTime": "1400",
"eventName": "Lesson",
"end_datetime": "20180507M1400",
"start_datetime": "20180507M1300",
},
{
"startTime": "1300",
"endTime": "1700",
"eventName": "Ski",
"end_datetime": "20180511M170000",
"start_datetime": "20180511M130000",
}
];

function getDiff(datestr1, datestr2) {
const m1 = moment(datestr1, 'YYYYMMDD*hhmm');
const m2 = moment(datestr2, 'YYYYMMDD*hhmm');
const minuteDifference = m2.diff(m1, 'minutes');
return minuteDifference;
}
const totalMinutes = input.reduce(
(accum, {
end_datetime,
start_datetime
}) => accum + getDiff(start_datetime, end_datetime),
0
);
const totalHours = totalMinutes / 60;
console.log(totalMinutes + ' minutes = ' + totalHours + ' hours');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

关于javascript - 计算对象中属性的总持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224962/

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