Skip to content

wilgert/moment-range

Repository files navigation

moment-range

Fancy date ranges for Moment.js.

Examples

Create

Create a date range:

varstart=newDate(2012,0,15);varend=newDate(2012,4,23);varrange=moment().range(start,end);

You can also create a date range with moment objects:

varstart=moment("2011-04-15","YYYY-MM-DD");varend=moment("2011-11-27","YYYY-MM-DD");varrange=moment().range(start,end);

Contains / Within / Overlaps / Intersect / Subtract

Check to see if your range contains a date/moment:

varstart=newDate(2012,4,1);varend=newDate(2012,4,23);varlol=newDate(2012,4,15);varwat=newDate(2012,2,27);varrange=moment().range(start,end);varrange2=moment().range(lol,wat);range.contains(lol);// truerange.contains(wat);// false

Find out if your moment falls within a date range:

varstart=newDate(2012,4,1);varend=newDate(2012,4,23);varwhen=moment("2012-05-10","YYYY-MM-DD");varrange=moment().range(start,end);when.within(range);// true

Does it overlap another range?

range.overlaps(range2);// true

What are the intersecting ranges?

range.intersect(range2);// [moment().range(lol, end)]

Subtracting one range from another.

range.subtract(range2);// [moment().range(start, lol)]

Iterate

Iterate over your date range by an amount of time or another range:

varstart=newDate(2012,2,1);vartwo=newDate(2012,2,2);varend=newDate(2012,2,5);varrange1=moment().range(start,end);varrange2=moment().range(start,two);// One dayvaracc=[];range1.by('days',function(moment){// Do something with `moment`});

Any of the units accepted by moment.js' add method may be used.

You can also iterate by another range:

range1.by(range2,function(moment){// Do something with `moment`acc.push(moment);});acc.length==5// true

Compare

Compare range lengths or add them together with simple math:

varr_1=moment().range(newDate(2011,2,5),newDate(2011,3,15));varr_2=moment().range(newDate(1995,0,1),newDate(1995,12,25));r_2>r_1// truer_1+r_2// duration of both ranges in millisecondsMath.abs(r_1-r_2);// difference of ranges in milliseconds

Equality

Check if two ranges are the same, i.e. their starts and ends are the same:

varr_1=moment().range(newDate(2011,2,5),newDate(2011,3,15));varr_2=moment().range(newDate(2011,2,5),newDate(2011,3,15));varr_3=moment().range(newDate(2011,3,5),newDate(2011,6,15));r_1.isSame(r_2);// truer_2.isSame(r_3);// false

Difference

The difference of the entire range given various units.

Any of the units accepted by moment.js' add method may be used.

varstart=newDate(2011,2,5);varend=newDate(2011,5,5);vardr=moment.range(start,end);dr.diff('months');// 3dr.diff('days');// 92dr.diff();// 7945200000

Conversion

toDate

varstart=newDate(2011,2,5);varend=newDate(2011,5,5);vardr=moment.range(start,end);dr.toDate();// [new Date(2011, 2, 5), new Date(2011, 5, 5)]

Installation

moment-range works in both the browser and node.js.

Browser

Simply include moment-range after moment.js:

<scriptsrc="/javascripts/moment-range.js"></script>

Thanks to the fine people at cdnjs, you can link to moment-range from the cdnjs servers.

NPM

Install via npm:

npm install moment-range

Or put it in your package.json:

{"moment-range": "~1" }

Bower

bower install moment-range

Running Tests

Clone this bad boy:

git clone https://[email protected]/gf3/moment-range.git

Install the dependencies:

npm install

Do all the things!

npm build npm test

License

moment-range is UNLICENSED.

About

Fancy date ranges for Moment.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • CoffeeScript57.1%
  • JavaScript42.9%