0.1.1 • Published 3 years ago

@goomba/date-fns v0.1.1

Weekly downloads
4
License
MIT
Repository
github
Last release
3 years ago

date-fns 📅

This library builds on the fantastic date-fns and adds some enhanced features for formatting dates and durations.

Getting Started

Installation

npm install @goomba/date-fns
# or
yarn add @goomba/date-fns

Usage

import { formatDuration } from '@goomba/date-fns'

formatDuration({ days: 3 }, "d 'days ago'");
//=> "3 days ago"

Functions

formatDuration

As date-fns/format allows convenient formatting of a Date, formatDuration allows the same for Durations. Nearly any format is supported because you define it!

const formattedDuration = formatDuration(duration, "h 'hours,' m 'minutes,' s 'seconds'");

How does it work?

The underlying data this function operates on is a date-fns Duration object. Each property is mapped to a specific token that will be replaced in the given format string.

Tokens
PropertyToken
Yearsy
MonthsM
Daysd
Hoursh
Minutesm
Secondss

Leading Zeros

Just like date-fns/format, repeating a token will add a leading zero (only) when applicable.

h => 7
hh => 07

m => 26
mm => 26

Dynamic Calculation

Another sweet feature is the ability to format only a portion of a duration and let the function determine what the amount should be.

Example

const duration = {
	hours: 1,
	minutes: 30,
	seconds: 0
};

formatDuration(duration, "h 'hour,' m 'minutes,' s 'seconds'");
//=> "1 hour, 30 minutes, 0 seconds"

formatDuration(duration, "m 'minutes,' s 'seconds'");
//=> "90 minutes, 0 seconds"

formatDuration(duration, "s 'seconds'");
//=> "5400 seconds"

Note

At this time, the larger parts of unused Duration will be added to the next largest token specified.

  • Smaller parts are left out. In other words, similar to rounding down. Open an issue if you are interested in rounding up in some manner.
  • Currently dynamic calculation can not be disabled. Open an issue if you are interested in this feature.

Syntax

formatDuration(duration, format);

Arguments

NameTypeDescription
durationDurationthe duration to format
formatstringthe string of tokens

Returns

TypeType
Stringthe formatted duration string

Exceptions

TypeDescription
TypeErrorParameter duration is required.
TypeErrorParameter format is required.
RangeErrorformat string contains an unescaped latin alphabet character