我一直试图弄清楚什么是计算一个事件的持续时间的最好方式。
我有以下字段集合:
type Event {
..
startsAt: "HH:mm MM-DD-YYYY"
endsAt: "HH:mm MM-DD-YYYY"
..
}
理想情况下,我想救
duration: String!
在我GraphQL突变,在创建活动时。
可能有人告诉我怎么能这样做?
我的堆栈:
我有以下安装:
..
..
提前谢谢了
有启动( startsAt
)和结束( endsAt
)日期,你可以很容易地计算在前端侧的持续时间,在某处你的反应的组分。
类似的东西:
// Convert `startsAt` and `endsAt` strings to moment date objects
const start = moment(state.Event.startsAt)
const end = moment(state.Event.endsAt)
// Calculate the duration
// Keep in mind you can get the duration in seconds, days, etc.
const duration = moment.duration(end.diff(start))
const hours = duration.asHours()
@Jordan节能条例 - 感谢了很多快速反应! 对于尝试这种扔一个错误“为.diff”后,由于某种原因,不是一个函数,我假设我不得不额外进口一些东西。 此外,我最终作出一个激进的决定,切换到Unix的时间戳。
随着Unix的时间戳,这是我如何实现我的目标:
添加插件npm install moment-duration-format
并导入它:
..
import momentDurationFormatSetup from "moment-duration-format";
..
momentDurationFormatSetup(moment);
const durationSeconds = (endsAt - startsAt) / 1000;
const duration = moment.duration(durationSeconds, "seconds").format("mm");
..
也在上面我裹在HOC力矩momentDurationFormatString()
由新导入的插件提供的
与之反应瞬间渲染它 - 那么:
..
import Moment from "react-moment";
..
<Moment unix format="dddd, Mo MMM, H:mm">
{startsAt / 1000}
</Moment>
..