我一直在尝试找出计算事件持续时间的最佳方法。
我有一个具有以下字段的收藏集:
type Event {
..
startsAt: "HH:mm MM-DD-YYYY"
endsAt: "HH:mm MM-DD-YYYY"
..
}
理想情况下,我想保存
duration: String!
创建事件时在我的GraphQL突变中。
有人可以建议我怎么做吗?
我的堆栈:
我已安装以下软件:
..
..
非常感谢
答案 0 :(得分:1)
具有开始(startsAt
和结束(endsAt
)的日期,您可以轻松地在React组件中某个位置的前端侧计算持续时间。
类似的东西:
// 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()
答案 1 :(得分:0)
@Jordan Enev-非常感谢您的快速回复!出于某种原因,尝试此操作后将引发错误“ .diff”不是函数,我假设我必须另外导入一些内容。同样,我最终做出了一个重大决定,决定改用Unix时间戳。
使用Unix时间戳,这就是我实现目标的方式:
添加插件cloud-utils
并将其导入:
npm install moment-duration-format
同样在上面,我将时刻包裹在新导入的插件提供的HOC ..
import momentDurationFormatSetup from "moment-duration-format";
..
momentDurationFormatSetup(moment);
const durationSeconds = (endsAt - startsAt) / 1000;
const duration = moment.duration(durationSeconds, "seconds").format("mm");
..
中
-然后使用React Moment渲染它:
momentDurationFormatString()