This package has been deprecated

Author message:

package deprecated

datetoken.js
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

Datetoken

Motivation

This package aims to solve a set of needs present in applications where dates need to be represented in a relative fashion, like background periodic tasks, datetime range pickers... in a compact and stringified format. This enables the programmer to persist these tokens during the lifetime of a process or even longer, since calculations are performed in the moment of re-evaluation

Some common examples of relative tokens:

  • Today: now/d, now
  • Yesterday: now-d/d, now-d@d
  • Last 24 hours: now-1d, now. Also writable as: now-24h, now
  • Last business week: now-w/bw, now-w@bw
  • This business week: now/bw, now@bw
  • Last month: now-1M/M, now-1M@M

As you may have noticed, token follow a pattern:

  • The word now. It means the point in the future timeline when tokens are parsed to their datetime form.

  • Optionally, modifiers to add and/or subtract the future value of now can be used. Unsurprisingly, additions are set via +, while - mean subtractions. These modifiers can be chained as many times as needed. E.g: now-1M+3d+2h. Along with the arithmetical sign and the amount, the unit of time the amount refers to must be specified. Currently, the supported units are:

    • s seconds
    • m minutes
    • h hours
    • d days
    • w weeks
    • M months
  • Optionally, there exist two extra modifiers to snap dates to the start or the end of any given snapshot unit. Those are:

    • / Snap the date to the start of the snapshot unit.
    • @ Snap the date to the end of the snapshot unit.

    Snapshot units are the same as arithmetical modifiers, plus bw, meaning business week. With this, we achieve a simple way to define canonical relative date ranges, such as Today or Last month. As an example of the later:

    • String representation: now-1M/M, now-1M@M
    • Being today 15 Jan 2018, the result range should be: 2018-01-01 00:00:00 / 2018-01-31 23:59:59

Installing

npm i datetoken

Ok, show me source code

>>> console.log(new Date())
2018-10-18 14:08:47
>>> Token.fromString('now-d/d').toDate()  // Start of yesterday
2018-10-17 00:00:00
>>> Token.fromString('now-d@d').toDate()  // End of yesterday
2018-10-17 23:59:59

Issues

  • Business week snapshots might not be reliable in timezones where weeks start in days other than Monday

Package Sidebar

Install

npm i datetoken.js

Weekly Downloads

1

Version

0.1.1

License

MIT

Unpacked Size

24.3 kB

Total Files

13

Last publish

Collaborators

  • sonirico