A tiny utility library with no dependencies that parses natural language
dates, times, and intervals to either a Date
instance or a
numerical value in milliseconds. Here are some examples of possible inputs:
npm i --save time-speak
Import the parse
function call it with a string containing a natural language
representation of either a time in the future, past, or a duration. The return
value is a timestamp in milliseconds if the input is a duration, otherwise it
is a Date
instance.
import { parse } from 'time-speak'
const pastDate = parse('2 days and 4 hours ago')
const pastDateWithNumberWords = parse('two days and four hours ago')
const futureDate = parse('in 4 hours')
const durationMS = parse('6 months')
console.log({
pastDateWithNumberWords, // 2023-12-19T13:02:39.768Z
pastDate, // 2023-12-19T13:02:39.768Z
futureDate, // 2023-12-21T21:02:39.768Z
durationMS // 15552000000
})
The standalone JSDoc reference can be found in DOCUMENTATION.md
Error thrown when the input cannot be parsed to a date or duration. It
optionally accepts a detail
parameter that can be used to provide more
information about why parsing failed.
A mapping of time units to their millisecond values.
A mapping of plural time units to their singular counterparts.
Parses a string into a Date
or number of milliseconds. The string can
describe the date in natural language (e.g. "tomorrow", "in 2 hours and 3
minutes", "a month ago", etc.) or be a valid date string (e.g. "2018-01-01").
Error thrown when the input cannot be parsed to a date or duration. It
optionally accepts a detail
parameter that can be used to provide more
information about why parsing failed.
Kind: global class
Access: public
Create a new InvalidInputError
instance with the given input
,
optionally providing a detail
parameter to describe why parsing failed.
The detail
parameter will be included in the error message if provided.
Param | Description |
---|---|
input | The input that could not be parsed |
detail | A more detailed description of the error |
The input that could not be parsed.
Kind: instance property of InvalidInputError
An optional detailed description of the reason why parsing failed.
Kind: instance property of InvalidInputError
Get the detail explaining why parsing failed. If no detail was provided, it will return an empty string.
Kind: instance property of InvalidInputError
Returns: The detail string.
Get the original input that could not be parsed.
Kind: instance property of InvalidInputError
Returns: The input string.
A mapping of time units to their millisecond values.
A mapping of plural time units to their singular counterparts.
Parses a string into a Date
or number of milliseconds. The string can
describe the date in natural language (e.g. "tomorrow", "in 2 hours and 3
minutes", "a month ago", etc.) or be a valid date string (e.g. "2018-01-01").
Kind: global function
Returns: The parsed date or number of milliseconds.
Throws:
Access: public
Param | Description |
---|---|
input | The string to parse. |
Example
Here are some example invocations:
const ... = parse('1 day ago')
const ... = parse('three days ago')
const ... = parse('in 2 hours and 3 minutes')
const ... = parse('a month')
const ... = parse('2018-01-01')
const ... = parse('2018-01-01T00:00:00.000Z')
Example
Here are some example invocations that throw an exception:
parse('in 2 hours and 3 minutes ago')
parse('a month in the past')
See CHANGELOG.md for more information.
Distributed under the MIT license. See LICENSE.md for more information.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)