@beauwest/business-date-parser

An opinionated, zero-dependency, fast user input parser for date & times. This module is designed to process & parse user input into a Javascript date object.

Usage no npm install needed!

<script type="module">
  import beauwestBusinessDateParser from 'https://cdn.skypack.dev/@beauwest/business-date-parser';
</script>

README

Business Date Parser Node.js CI

An opinionated, zero-dependency, fast user input parser for date & times. This module is designed to process & parse user input into a Javascript date object.

Date Format Examples

  • c: Current Date
  • y: Yesterday
  • t: Tomorrow
  • f: First day of the month
  • l: Last day of the month
  • +20: 20 days from now
  • -20: 20 days ago
  • 15: The 15th day of the current month
  • 4/15: The 15th day of April of the current year
  • 4/15/2020: April 15th, 2020
  • 5-3-18: May 3rd, 2018
  • 2025-03-01: March 1st, 2025

Time Format Examples

  • c: Current Time
  • +20: 20 minutes from now
  • -20: 20 minutes ago
  • 2: 2:00 PM
  • 02: 2:00 AM
  • 2a: 2:00 AM
  • 2:45: 2:45 PM
  • 2:45a: 2:45 AM
  • 530: 5:30 PM
  • 8:22:34.028: 8:22:34.028 AM

Date & Time format examples

  • Date and time parsing splits based on the first space encountered.
  • y 5p: Yesterday at 5:00PM
  • l 8a: Last day of the month at 8:00AM
  • 2025-03-01 8:22:34.028: March 1st, 2025 at 8:22:34.028 AM

Anything that does not match the rule-based parsing will fall back to Javascript's built-in Date.parse().

Installing

npm i @beauwest/business-date-parser

Getting Started

import {parseDate, parseTime, parseDateAndTime} from 'business-date-parser';

const theFifth = parseDate('5');

const threeDaysFromNow = parseDate('+3');

const quittingTime = parseTime('5');

const snackTime = parseTime('2:30p');

const snackTimeThreeDaysFromNow = parseTime('+3 2:30p');

// Will prefer time parsing when no date part is found in a dateAndTime string
const preferTime = parseDateAndTime('9a', {preferTime: true});

// Default to a specific date when preferring time parsing and there is no date part.
const preferTimeWithSpecificDate = parseDateAndTime('9a', {preferTime: true, defaultDate: '2025-03-01'});