Parse a grafana-inspired relative date notation into momentjs instances. Where
"relative" means: relative to now
.
Pass in a string in moment-relativism
's relative date notation.
var moment = require('moment-relativism');
var result = moment.relativism('now-7d');
// logs "Thu Aug 04 2016 16:03:28 GMT+0200" when now is "Thu Aug 11 2016 16:03:28 GMT+0200"
console.log(result.toString());
You can also pass in an object. moment.relativism
will return an object of
the same structure (same fields), but with the values replaced with their
current momentjs equivalent instances.
var moment = require('moment-relativism');
// I want the date range for exactly the last 7 days (not rounded).
var range = {
from: 'now-7d',
to: 'now'
};
var result = moment.relativism(range);
// logs "Thu Aug 04 2016 16:03:28 GMT+0200" and "Thu Aug 11 2016 16:03:28 GMT+0200"
console.log(result.from.toString(), result.to.toString());
Check out the tests
directory for more detailed usage.
moment-relativism
's notation is based on grafana's relative date parser.
However, grafana's notation does not provide a way to distinguish between
rounding up or rounding down. Instead the rounding character /
is rounded up
or down based on the context the string is used in. If the string is used as a
"from" date in a date range, it rounds down. Otherwise it rounds down.
moment-relativism
differs here, as it adds a |
character for rounding
down. /
is always used for rounding up.
When adding, subtracting and rounding you can use moment
's shorthand keys
for years, days, etc as found in moment
's
documentation.
Notation | Result |
---|---|
now+1d |
Add one day to now |
now-1d |
Subtract one day from now |
now+1d/d |
Add one day to now, round up to end of day |
`now-1d | d` |
now |
Just returns the date corresponding to now |
now/d |
Rounds up to todays end of day. |
`now | d` |
This software is copyrighted by Advanced Climate Systems bv, and released under
the Mozilla Public License v2.0. See the LICENSE
file for the entire license.