array [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時間+朝食4時間+レッスン1時間+スキー4時間)
複数日にわたる時間を考慮した、可能な実装の1つを次に示します。
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>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加