npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@171h/dayjs-business-time

v1.1.0

Published

A [Day.js](https://github.com/iamkun/dayjs) plugin that allows you to work with Business Time.

Downloads

39

Readme

dayjs-business-time

A Day.js plugin that allows you to work with Business Time.

  • Business Days
  • Business Hours
  • Business Minutes
  • Customize business days and hours
  • Customize Holidays to prevent them to be counted as Business Days

Getting Started

Special Version

  • add isRealBusinessTime function compared to the official v1.0.4
    expect(dayjs('2021-02-11 17:00:00').isRealBusinessTime()).toBe(false);
    expect(dayjs('2021-02-11 17:00:00').isBusinessTime()).toBe(true);

Table of Contents

Instalation

With NPM

npm i dayjs-business-time

With Yarn

yarn add dayjs-business-time

Usage

NodeJS

// First of all, include dayjs
const dayjs = require('dayjs');

// Then, include dayjs-business-time
const dayjsBusinessTime = require('dayjs-business-time');

// Attach dayjs plugin
dayjs.extend(dayjsBusinessTime);

// Now you have all Business Time methods in dayjs

Typescript

// First of all, include dayjs
import dayjs from 'dayjs';

// Then, include dayjs-business-time
import dayjsBusinessTime from 'dayjs-business-time';

// Attach dayjs plugin
dayjs.extend(dayjsBusinessTime);

// Now you have all Business Time methods in dayjs

Setup

Setting Holidays

By default, holidays are empty!

// Create your holidays array as string array
const holidays: string[] = [
    '2021-01-01',
    '2021-01-25',
    '2021-06-03',
];

// Add holidays to dayjs
dayjs.setHolidays(holidays);

Getting Holidays

const holidays: string[] = dayjs.setHolidays(holidays);

console.log(holidays);
// Output: ['2021-01-01', '2021-01-25', '2021-06-03']

Setting Business Times

By default, Business Times are Monday-Friday, 9am - 5pm, but you can setup as many Business Segments you want in a day

// Create your Business Week definition
const businessTimes: BusinessHoursMap = {
  sunday: null,
  monday: [
    { start: '09:00:00', end: '17:00:00' }
  ],
  tuesday: [
    { start: '09:00:00', end: '12:00:00' },
    { start: '13:00:00', end: '18:00:00' }
  ],
  wednesday: [
    { start: '09:00:00', end: '12:00:00' },
    { start: '13:00:00', end: '16:00:00' },
    { start: '13:00:00', end: '17:00:00' }
  ],
  thursday: [
    { start: '09:00:00', end: '17:00:00' }
  ],
  friday: [
    { start: '09:00:00', end: '17:00:00' }
  ],
  saturday: null,
}

// Set Business Times in dayjs
dayjs.setBusinessTime(businessTimes);

Checking

Check if a date is a Holiday

According to holidays setup

const isHoliday = dayjs('2021-02-01').isHoliday();

console.log(isHoliday); // false

Check if a date is a Business Day

Bussiness Days are days with Business Hours settled, excluding Holidays.

const isBusinessDay = dayjs('2021-02-01').isBusinessDay();

console.log(isBusinessDay); // true

Check if a Time is Business Time

Bussiness Times are all minutes between Start and End of a Business Time Segment.

const isBusinessTime = dayjs('2021-02-01 10:00:00').isBusinessTime();

console.log(isBusinessTime); // true

Next and Last

Get Next Business Day

const nextBusinessDay = dayjs('2021-02-01').nextBusinessDay();

console.log(nextBusinessDay); // 2021-02-02

Get Last Business Day

const lastBusinessDay = dayjs('2021-02-01').lastBusinessDay();

console.log(nextBusinessDay); // 2021-01-29

Get Next Business Time

const nextBusinessTime = dayjs('2021-02-01 18:00:00').nextBusinessTime();

console.log(nextBusinessTime); // 2021-02-02 09:00:00

Get Last Business Time

const lastBusinessTime = dayjs('2021-02-01 08:00:00').lastBusinessTime();

console.log(lastBusinessTime); // 2021-01-29 17:00:00

Adding Business Time

Add Business Time

const day = dayjs('2021-02-01 10:00:00');
const timeToAdd: number = 2;

// Possible BusinessTimeUnit is 'day', 'days', 'hour', 'hours', 'minute', 'minutes'
const unit: BusinessTimeUnit = 'days';

const newBusinessTime: Dayjs = day.addBusinessTime(timeToAdd, unit);

console.log(newBusinessTime); // 2021-02-02 10:00:00

Add Business Days

This method is just an alias for .addBusinessTime(timeToAdd, 'days')

const day = dayjs('2021-02-01 10:00:00');
const timeToAdd: number = 2;

const newBusinessTime: Dayjs = day.addBusinessDays(timeToAdd);

console.log(newBusinessTime); // 2021-02-02 10:00:00

Add Business Hours

This method is just an alias for .addBusinessTime(timeToAdd, 'hours')

const day = dayjs('2021-02-01 10:00:00');
const timeToAdd: number = 2;

const newBusinessTime: Dayjs = day.addBusinessHours(timeToAdd);

console.log(newBusinessTime); // 2021-02-01 12:00:00

Add Business Minutes

This method is just an alias for .addBusinessTime(timeToAdd, 'minutes')

const day = dayjs('2021-02-01 10:00:00');
const timeToAdd: number = 30;

const newBusinessTime: Dayjs = day.addBusinessMinutes(timeToAdd);

console.log(newBusinessTime); // 2021-02-01 10:30:00

Subtracting Business Time

Subtract Business Time

const day = dayjs('2021-02-01 10:00:00');
const timeToSubtract: number = 2;

// Possible BusinessTimeUnit is 'day', 'days', 'hour', 'hours', 'minute', 'minutes'
const unit: BusinessTimeUnit = 'days';

const newBusinessTime: Dayjs = day.subtractBusinessTime(timeToSubtract, unit);

console.log(newBusinessTime); // 2021-01-28 10:00:00

Subtract Business Days

This method is just an alias for .subtractBusinessTime(timeToSubtract, 'days')

const day = dayjs('2021-02-01 10:00:00');
const timeToSubtract: number = 2;

const newBusinessTime: Dayjs = day.subtractBusinessDays(timeToSubtract);

console.log(newBusinessTime); // 2021-01-28 10:00:00

Subtract Business Hours

This method is just an alias for .subtractBusinessTime(timeToSubtract, 'hours')

const day = dayjs('2021-02-01 12:00:00');
const timeToSubtract: number = 2;

const newBusinessTime: Dayjs = day.subtractBusinessHours(timeToSubtract);

console.log(newBusinessTime); // 2021-02-01 10:00:00

Subtract Business Minutes

This method is just an alias for .subtractBusinessTime(timeToSubtract, 'minutes')

const day = dayjs('2021-02-01 10:00:00');
const timeToSubtract: number = 30;

const newBusinessTime: Dayjs = day.subtractBusinessMinutes(timeToSubtract);

console.log(newBusinessTime); // 2021-02-01 09:30:00

Diff

Business Time Diff

const start: Dayjs = dayjs('2021-02-01 10:00:00');
const end: Dayjs = dayjs('2021-02-04 10:00:00');

// Possible BusinessTimeUnit is 'day', 'days', 'hour', 'hours', 'minute', 'minutes'
const unit: BusinessTimeUnit = 'days';

const difference: number = start.businessTimeDiff(end, unit);

console.log(difference); // 3

Business Days Diff

This method is just an alias for .businessTimeDiff(dateToCompare, 'days')

const start: Dayjs = dayjs('2021-02-01 10:00:00');
const end: Dayjs = dayjs('2021-02-04 10:00:00');

const difference: number = start.businessDaysDiff(end);

console.log(difference); // 3

Business Hours Diff

This method is just an alias for .businessTimeDiff(dateToCompare, 'hours')

const start: Dayjs = dayjs('2021-02-01 10:00:00');
const end: Dayjs = dayjs('2021-02-01 15:00:00');

const difference: number = start.businessHoursDiff(end);

console.log(difference); // 5

Business Minutes Diff

This method is just an alias for .businessTimeDiff(dateToCompare, 'minutes')

const start: Dayjs = dayjs('2021-02-01 10:00:00');
const end: Dayjs = dayjs('2021-02-01 10:45:00');

const difference: number = start.businessMinutesDiff(end);

console.log(difference); // 25