Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/advancedclimatesystems/moment-relativism
Parse grafana-inspired relative date notation into momentjs instances
https://github.com/advancedclimatesystems/moment-relativism
grafana moment-relativism momentjs
Last synced: 26 days ago
JSON representation
Parse grafana-inspired relative date notation into momentjs instances
- Host: GitHub
- URL: https://github.com/advancedclimatesystems/moment-relativism
- Owner: AdvancedClimateSystems
- License: mpl-2.0
- Created: 2016-08-11T12:36:07.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-08-15T09:00:58.000Z (about 8 years ago)
- Last Synced: 2024-10-11T06:04:53.899Z (26 days ago)
- Topics: grafana, moment-relativism, momentjs
- Language: JavaScript
- Homepage:
- Size: 17.6 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
moment-relativism
=================[![Build Status](https://travis-ci.org/AdvancedClimateSystems/moment-relativism.svg?branch=master)](https://travis-ci.org/AdvancedClimateSystems/moment-relativism)
Parse a grafana-inspired relative date notation into momentjs instances. Where
"relative" means: relative to `now`.Usage
-----Pass in a string in `moment-relativism`'s relative date notation.
```javascript
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.```javascript
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.
Notation
--------`moment-relativism`'s notation is based on [grafana's relative date parser](https://github.com/grafana/grafana/blob/56622ee2c6d030efb7b39433b1b1fc6f0e7250a4/public/app/core/utils/rangeutil.ts).
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](http://momentjs.com/docs/#/manipulating/add/).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` | Subtract one day from now, round down to start of day
`now` | Just returns the date corresponding to now
`now/d` | Rounds up to todays end of day.
`now|d` | Rounds down to todays start of day.License
-------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.