semantic-date

Convert natural language time spans to Date objects

Usage no npm install needed!

<script type="module">
  import semanticDate from 'https://cdn.skypack.dev/semantic-date';
</script>

README

Semantic-Date

Convert natural language time spans to Date objects

Installation

$ npm install semantic-date

Usage

semanticDate = require 'semantic-date'

semanticDate.validate "last year"
> true

semanticDate.convert "last year"
> { start: Wed Jan 01 2014 00:00:00 GMT-0500 (EST),
    end: Thu Jan 01 2015 00:00:00 GMT-0500 (EST) }

Provide a Date object as the second parameter to convert to use that date as the reference:

semanticDate.convert "last hour", new Date(2011, 3, 4, 3, 0, 0)
> { start: Mon Apr 04 2011 02:00:00 GMT-0400 (EDT),
  end: Mon Apr 04 2011 03:00:00 GMT-0400 (EDT) }

Supported Semantics

The following are the semantic dates which are currently understood. More and more permutations of the current ones will be added over time. Feel free to send me a PR with your favorite form.

  • last minute (up to current time)
  • last hour (up to current time)
  • last/past 24h/hours (up to current time)
  • yesterday
  • last week (week before the current)
  • past week (7 days)
  • last month (month before the current)
  • past month (30 days)
  • last year (year before the current)
  • past year (365 days)
  • today (up to current time)
  • this week (up to current time)
  • this month (up to current time)
  • this year (up to current time)
  • since 1970 (up to current time)

Hypens and underscores are supported in place of spaces.

Testing

$ npm test

License

MIT