有没有一种方法可以使用date-fns或JavaScript

时间:2020-07-23 11:03:35

标签: javascript angular typescript datetime date-fns

我目前在Angular应用程序中使用date-fns库,并且正在使用名为isWeekend的帮助程序来从仅在周末使用的数组中返回一些时隙项。

但是,我找不到在特定时间(例如“下午1点之后”)之后返回“周末”项目的方法。

请参见以下内容:

  • 有两个日期,时间是13:00:00(下午1点)之后
  • 有两个日期的时间在13:00:00(1 PM)之前

我需要调整过滤器以适应 13:00:00(下午1点)之后和周末的时间。

const days = [
  { date: "Sun Jul 25 2020 15:30:00 GMT+0100 (British Summer Time)" },
  { date: "Sun Jul 25 2020 19:00:00 GMT+0100 (British Summer Time)" },
  { date: "Sat Jul 25 2020 05:00:00 GMT+0100 (British Summer Time)" },
  { date: "Sat Jul 25 2020 02:00:00 GMT+0100 (British Summer Time)" }
];

const filteredDays = days.filter((day) => {
  console.log(dateFns.isWeekend(day.date));
  // Need a solution for dateFns.isWeekend and after 13:00:00 or 1 PM
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js"></script>

1 个答案:

答案 0 :(得分:1)

您可以使用同一库的getHours函数提取日期的“小时”部分,然后查看返回的数字是否为13或更高。结合您现有的isWeekend用法,您的过滤器非常简单。

注意:当您的日期指定时区时,此库将基于用户的当前语言环境运行这两个功能。只是要记住一点。

const days = [
  { date: "Sun Jul 25 2020 15:30:00 GMT+0100 (British Summer Time)" },
  { date: "Sun Jul 25 2020 19:00:00 GMT+0100 (British Summer Time)" },
  { date: "Sat Jul 25 2020 05:00:00 GMT+0100 (British Summer Time)" },
  { date: "Sat Jul 25 2020 02:00:00 GMT+0100 (British Summer Time)" }
];

const filteredDays = days.filter((day) => {
 return dateFns.isWeekend(day.date) && dateFns.getHours(day.date) >= 13;
});

console.log(filteredDays);
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js"></script>