if NOW if 在两个日期时间之间的逻辑
Logic for if NOW if between two date-times
我正在为广播节目制作时间表,我需要显示当前正在直播的节目。
目前它从开始时间开始工作,但在结束时间之后仍然显示“实时”。
此屏幕截图拍摄于 10:12am
我正在使用 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 })))
);
尝试使用:
版本 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) }
)
祝你好运!
我正在为广播节目制作时间表,我需要显示当前正在直播的节目。 目前它从开始时间开始工作,但在结束时间之后仍然显示“实时”。
此屏幕截图拍摄于 10:12am
我正在使用 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 })))
);
尝试使用: 版本 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) }
)
祝你好运!