"opening_hours" 是一个用于计算在一定时间段内营业小时数的 JavaScript 库。它主要用于在开发时处理运营时间计算,特别是对于那些开发在线商店、餐馆和其它需要考虑运营时间的应用程序来说非常有用。本文将详细讲解如何使用
opening_hours
这个 npm 包以及其使用方法和示例代码。
安装 opening_hours
你可以使用 npm 安装 opening_hours
:
npm install opening_hours --save
第一步:实例化
在使用 opening_hours
库之前,首先需要创建一个 OpeningHours
实例,这个实例包含一个开放时间规则。以下是一个示例:
const opening_hours = require('opening_hours'); const oh = new opening_hours('Mo-We 10:00-14:00,15:00-19:00; Th 12:00–16:00; Fr 10:00-14:00,15:00-19:00; ''' ''' Sa,Su 09:00-16:00; PH off');
在上面的示例中,我们创建了一个被命名的 opening_hours
实例。在实例化时,我们将注意力放在了开放时间规则上。开放时间规则是增加此库的最重要部分,因为它提供了我们需要计算的运营时间。
第二步:检查时间是否营业
如果我们想知道第一个参数所表示的时间是否营业,可以使用 isOpened
方法, 方法接收一个 Date
对象作为参数,会返回布尔类型的结果,如果当前处于營業时间内则返回 true,否则返回 false。
以下代码示例演示如何使用 isOpened
方法:
// Define your OpeningHours instance const oh = new opening_hours('Mo-We 10:00-14:00,15:00-19:00; Th 12:00–16:00; Fr 10:00-14:00,15:00-19:00; Sa,Su 09:00-16:00; PH off'); // Check if it is open on the 25th of December oh.isOpened(new Date('12/25/2019 10:30:00')); //false // Check if it is open on a Saturday at 13:30 oh.isOpened(new Date('07/13/2019 13:30:00')); //true
第三步:获取下一个营业时间
如果我们需要知道当日下班了,紧接着的下一个营业时间是何时,可以使用 getNextOpeningTime
方法。
该方法接收Date
对象作为输入返回下一个拥有营业时间的日期。 这对于需要通知客户下一次營業时间的应用程序特别有用。
以下代码示例演示如何使用 getNextOpeningTime
方法:
// Define your OpeningHours instance const oh = new opening_hours('Mo-We 10:00-14:00,15:00-19:00; Th 12:00–16:00; Fr 10:00-14:00,15:00-19:00; Sa,Su 09:00-16:00; PH off'); // Get the next opening time after the 25th of December oh.getNextOpeningTime(new Date('12/25/2019 10:30:00')).toString(); //Sat, 28 Dec 2019 09:00:00 GMT // Get the next opening time after the current time (useful for notifications) oh.getNextOpeningTime(new Date()).toString(); //Fri, 22 Nov 2019 10:00:00 GMT
第四步:检查时间范围
如果你需要检查是否一个时间范围包含在您的开放时间规则中,可以使用 isOpen
方法。
该方法接收两个 Date
对象作为输入,第一个表示开始时间,第二个表示结束时间。如果两者都营业,则返回 true
。如果两者都不在营业时间内,则返回 false
。如果有一部分营业时间,则返回 2
。
以下代码示例演示如何使用 isOpen
方法:
// Define your OpeningHours instance const oh = new opening_hours('Mo-We 10:00-14:00,15:00-19:00; Th 12:00–16:00; Fr 10:00-14:00,15:00-19:00; Sa,Su 09:00-16:00; PH off'); // Check if "New Year's Eve" between 7 pm and 10 pm is open oh.isOpen(new Date('12/31/2019 19:00:00'), new Date('12/31/2019 22:00:00')); //false // Check if 3 pm to 4 pm on a Monday oh.isOpen(new Date('05/06/2019 15:00:00'), new Date('05/06/2019 16:00:00')); //true
完整代码示例
为了更好的理解,以下是一个完整的JavaScript代码示例:
-- -------------------- ---- ------- ----- ------------- - ------------------------- -- ------ ---- ------------ -------- ----- -- - --- -------------------- ------------------------ -- ------------ -- ------------------------ ----- ------------ -- ------ -- ----- -- -- -- ---- -- --- ---- -- -------- --------------------------- ---------------- ------------- ------- -- ----- -- -- -- ---- -- - -------- -- ----- --------------------------- ---------------- ------------- ------ -- --- --- ---- ------- ---- ----- --- ---- -- -------- ------------------------------------- ---------------- ------------------------ ------ -- --- ---- -------- --- -- --- --- ---- ------- ---- ----- --- ------- ---- ------- --- -------------- ------------------------------------- -------------------- ------ -- --- ---- -------- --- -- ----- -- ---- ------ ---- ------- - -- --- -- -- -- ---- ------------------------- ---------------- ----------- --- ---------------- ------------- ------- -- ----- -- - -- -- - -- -- - ------ ------------------------- ---------------- ----------- --- ---------------- ------------- ------
如何使用
使用 opening_hours
库时有几个要点需要注意:
- 开放时间规则以字符串形式传递
- 开放时间规则只适用于 UTC-offset 为 0(北京时间为 GMT+8)的日期。
OpeningHours
实例应该只在你的代码中实例化一次。在循环中多次实例化实例开销很大。OpeningHours
实例重复很少,最好缓存或重用已经解析的字符串。- 日期应该是
Date
对象,应该指定时区。
结论
在本文中,介绍了如何使用 opening_hours
库来处理营业时间计算。通过看完文章,你现在应该完全了解如何实例化、检查时间状态以及更多运用 opening_hours
库。 为你的下一个前端项目,使用 opening_hours
库帮助你轻松地计算运营时间。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66913