Twix.js
Twix is a comprehensive JS library for working with date ranges, and includes a customizable smart formatter. It's written in CoffeeScript and it depends on Moment.js.
Some examples:
var t = moment("1982-01-25T09:30").twix("1982-01-25T13:30");
t.format(); //=> Jan 25, 1982, 9:30 AM - 1:30 PM
t.isSame("day"); //=> true
t.humanizeLength(); //=> "4 hours"
t.count("days"); //=> 1
t.intersection(otherRange); //=> another rangeSee the documentation for more.
Documentation
You can find comprehensive docs here:
Breaking change in 0.9.0: The showDate smart format option has been deprecated but also modified. It previously hid the date if the range spanned only one day, regardless of the day. I found that confusing, so you now have two options: a. hide the date with hideDate: true or b. use implicitDate: true to elide the date if it spans one day and that day is today. showDate has been aliased to !implicitDate, though that behavior is not consistent with the old behavior. If for some reason "hide the date if the range spans only one day" is a real use case for you that I just broke, please let me know.
Building
If you want to build and test Twix for yourself, make wraps everything you need:
| Command | Function |
|---|---|
make configure |
Install dependencies (same as npm install) |
make or make build |
Compile src/*.coffee to dist/*.js |
make test |
Run Mocha suite |
make lint |
Linter |
make bench |
Microbenchmarks |
Contributing
Patches are welcome!
- Don't include your changes to the generated
.jsfiles in the patch; they're much harder to merge. I'll generate them when I cut the release. - Make sure you run the linter and the tests before submitting a PR. Use
make lintandmake test. - If you make a change that will need documentation, make the appropriate update to docs. It will get published to the website on the next release.
Changelog
Copyright and License
Copyright 2012-2015 Isaac Cambron and contributors. Distributed under the MIT License. See LICENSE for details.