反应MomentJS得到开始时间和结束时间段(React MomentJS get duration

2019-10-30 01:45发布

我一直试图弄清楚什么是计算一个事件的持续时间的最好方式。

我有以下字段集合:

type Event {
 ..
 startsAt: "HH:mm MM-DD-YYYY"
 endsAt: "HH:mm MM-DD-YYYY"
 ..
}

理想情况下,我想救

duration: String!

在我GraphQL突变,在创建活动时。

可能有人告诉我怎么能这样做?

我的堆栈:

  • 应对
  • 阿波罗
  • GraphQL

我有以下安装:
..

  • MomentJS
  • 瞬间反应

..

提前谢谢了

Answer 1:

有启动( 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()


Answer 2:

@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>
..


文章来源: React MomentJS get duration from start time and end time