首页 > 解决方案 > 按开始和结束时间计算持续时间

问题描述

我有这个 json :

{
    endTime: "14:00:00"
    startTime: "12:00:00"
}

我需要计算持续时间,所以我这样做了:

let duration = endTime.slice(0, -3) - startTime.slice(0, -3);

但没有按预期工作。我有一个 js 错误:左手必须是类型号

对此有想法吗?

提前谢谢。

标签: javascripttypescript

解决方案


好的,我正在考虑您只接收具有 endTime 和 startTime 属性的对象,而不是使用数组。

在以下代码块中,您可以将字符串转换为日期并使用它们进行计算。在这个例子中,我只是减去了 endDate - startDate 以得到毫秒的差异,然后我转换为秒、分钟和小时。

const data = {
  endTime: '14:00:00',
  startTime: '12:00:00',
}

// separates the string in hours, minutes and seconds
const [startHours, startMinutes, startSeconds] = data.startTime.split(':')
const [endHours, endMinutes, endSeconds] = data.endTime.split(':')

// creates a Date instance to work with
const startDate = new Date()
const endDate = new Date()

// sets hour, minutes and seconds to startDate
startDate.setHours(startHours)
startDate.setMinutes(startMinutes)
startDate.setSeconds(startSeconds)

// sets hour, minutes and seconds to endDate
endDate.setHours(endHours)
endDate.setMinutes(endMinutes)
endDate.setSeconds(endSeconds)

const differenceInMilliseconds = endDate - startDate
const differenceInSeconds = differenceInMilliseconds / 1000
const differenceInMinutes = differenceInSeconds / 60
const differenceInHours = differenceInMinutes / 60

console.log(differenceInHours) // outputs 2 hours


推荐阅读