【问题标题】:Logic for if NOW if between two date-times如果现在在两个日期时间之间的逻辑
【发布时间】:2020-11-11 19:18:29
【问题描述】:

我正在为一个广播节目制定时间表,我需要显示当前正在直播的节目。 目前它从开始时间开始工作,但在结束时间之后仍显示“实时”。

这张截图是在上午 10 点 12 分拍摄的

我正在使用date-fns 库。 调度数据形状如下。

"shows": [
    {
      "artist": "Set & Setting ",
      "starts_at": "2020-06-29T07:00:00.000Z",
      "ends_at": "2020-06-29T08:00:00.000Z",
      "description": "w/ JD"
    },
    {
      "artist": "Set & Setting ",
      "starts_at": "2020-06-29T08:00:00.000Z",
      "ends_at": "2020-06-29T09:00:00.000Z",
      "description": "w/ JD"
    },
    {
      "artist": "The Great Stuff",
      "starts_at": "2020-07-16T21:00:00.000Z",
      "ends_at": "2020-07-16T13:00:00.000Z",
      "description": "w/ ??"
    },
    {
      "artist": "The Melting Pot ",
      "starts_at": "2020-07-16T17:00:00.000Z",
      "ends_at": "2020-07-16T19:00:00.000Z",
      "description": "w/ Tom B"
    }
  ]

我判断迭代中的当前项目是否处于活动状态的逻辑是

...
import { startOfToday, parseISO, getHours, getMinutes, sub } from "date-fns"
...

const now = new Date();
const { starts_at, ends_at } = item;
const liveNow =  (
        (getHours(now) >= getHours(parseISO(starts_at)) && getMinutes(now) >= getMinutes(parseISO(starts_at))) &&
        (getHours(now) <= getHours(parseISO(ends_at)) && getMinutes(now) <= getMinutes(sub(parseISO(ends_at), { minutes: 1 })))
);

【问题讨论】:

    标签: javascript date date-fns


    【解决方案1】:

    尝试使用: 2.0.0版本之前:

    isWithinRange(date, startDate, endDate)

    例子:

    const liveNow = isWithinRange(now, parseISO(starts_at), parseISO(ends_at))
    

    2.0.0 之后:

    isWithinInterval(date, interval, [options])

    例子:

    const liveNow = isWithinInterval(
      now,
      { start: parseISO(starts_at), end: parseISO(ends_at) }
    )
    

    祝你好运!

    【讨论】:

    • 谢谢你,我会试一试的!出于某种原因,在date-fns 文档中很难找到该功能。现在找到了!
    • 酷...我希望它会起作用...如果一切正常,请投票。祝你有美好的一天。
    • isWithinRangedate-fns:v-2+ 上不存在,但 isWithinInterval 确实如此,他们将其重命名为!感谢您的帮助。
    • 我已经为其他用户更新了这两个版本的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多