Fancy date ranges for Moment.js.
Create a date range:
var start = new Date(2012, 0, 15)
, end = new Date(2012, 4, 23)
, range = moment().range(start, end);
You can also create a date range with moment objects:
var start = moment("2011-04-15", "YYYY-MM-DD")
, end = moment("2011-11-27", "YYYY-MM-DD")
, range = moment().range(start, end);
Check to see if your range contains a date/moment:
var start = new Date(2012, 4, 1)
, end = new Date(2012, 4, 23)
, lol = new Date(2012, 4, 15)
, wat = new Date(2012, 2, 27)
, range = moment().range(start, end);
range.contains(lol); // true
range.contains(wat); // false
Find out if your moment falls within a date range:
var start = new Date(2012, 4, 1)
, end = new Date(2012, 4, 23)
, when = moment("2012-05-10", "YYYY-MM-DD")
, range = moment().range(start, end);
when.within(range); // true
Iterate over your date range by another range:
var start = new Date(2012, 2, 1)
, two = new Date(2012, 2, 2)
, end = new Date(2012, 2, 5)
, range1 = moment().range(start, end)
, range2 = moment().range(start, two) // One day
, acc = [];
range1.by(range2, function(moment) {
// Do something with `moment`
});
acc.length == 5 // true
Compare range lengths or add them together with simple math:
var r_1 = moment().range(new Date(2011, 2, 5), new Date(2011, 3, 15))
, r_2 = moment().range(new Date(1995, 0, 1), new Date(1995, 12, 25));
r_2 > r_1 // true
r_1 + r_2 // duration of both ranges in milliseconds
Math.abs(r_1 - r_2); // difference of ranges in milliseconds
moment-range works in both the browser and node.js.
Simply include moment-range after moment.js:
<script src="/javascripts/moment-range.js"></script>
Install via npm:
npm install moment-range
Or put it in your package.json
:
{ "moment-range": "~0.1" }
bower install moment-range
Clone this bad boy:
$ git clone https://git@github.com/gf3/moment-range.git
Install the dependencies:
$ npm install
Run the tests:
$ ./node_modules/.bin/cake test
moment-range is UNLICENSED.