UNPKG

vague-date

Version:

A tiny JavaScript library that formats precise time differences as a vague/fuzzy date, e.g. 'yesterday', 'today' or 'next week'.

139 lines (109 loc) 3.42 kB
# vagueDate.js [![Build status][ci-image]][ci-status] A tiny JavaScript library that formats precise time differences as a vague/fuzzy date, e.g. 'yesterday', 'today' or 'next week'. If this project isn't quite what you're looking for, you may be interested in vagueDate's little sister, [vagueTime.js][vague-time]. Or if you would like to parse vague date strings rather than generate them, you should try Matthew Mueller's [date] or Tim Wood's [moment]. ## License [MIT][license] ## Installation ### Via NPM ``` npm install vague-date ``` ### Via Jam ``` jam install vague-date ``` ### Via Git ``` git clone git@github.com:philbooth/vagueDate.js.git ``` ## Usage ### Loading the library Both CommonJS (e.g. if you're running on [Node.js][node] or in the browser with [Browserify]) and AMD (e.g. if you're using [Require.js][require]) loading styles are supported. If neither system is detected, the library defaults to exporting it's interface globally as `vagueDate`. ### Calling the library vagueDate.js exports a single public function, `get`, which returns a vague date string based on the argument(s) that you pass it. The arguments are passed as properties on a single options object. The optional property `from` is a `Date` instance or timestamp denoting the origin point from which the vague date will be calculated, defaulting to `Date.now()` if undefined. The optional property `to` is a `Date` instance or timestamp denoting the target point to which the vague date will be calculated, defaulting to `Date.now()` if undefined. The optional property `units` is a string, denoting the units that the `from` and `to` timestamps are specified in, either `'s'` for seconds or `'ms'` for milliseconds, defaulting to `'ms'` if undefined. This property has no effect when `from` and `to` are `Date` instances rather than timestamps. Essentially, if `to` is less than `from` the returned vague date will indicate some point in the past. If `to` is greater than `from` it will indicate some point in the future. ### Examples ``` vagueDate.get({ from: new Date(2013, 0, 1), to: new Date(2012, 11, 31) }); // Returns 'yesterday' vagueDate.get({ from: new Date(2013, 0, 1), to: new Date(2013, 0, 2) }); // Returns 'tomorrow' ``` ## Development ### Dependencies The build environment relies on Node.js, [NPM], [Jake], [JSHint], [Mocha], [Chai] and [UglifyJS]. Assuming that you already have Node.js and NPM set up, you just need to run `npm install` to install all of the dependencies as listed in `package.json`. ### Unit tests The unit tests are in `test/vagueDate.js`. You can run them with the command `npm test` or `jake test`. To run the tests in a web browser, open `test/vagueDate.html`. [ci-image]: https://secure.travis-ci.org/philbooth/vagueDate.js.png?branch=master [ci-status]: http://travis-ci.org/#!/philbooth/vagueDate.js [vague-time]: https://github.com/philbooth/vagueTime.js [date]: https://github.com/MatthewMueller/date [moment]: https://github.com/timrwood/moment [license]: https://github.com/philbooth/vagueDate.js/blob/master/COPYING [node]: http://nodejs.org/ [browserify]: http://browserify.org/ [require]: http://requirejs.org/ [npm]: https://npmjs.org/ [jake]: https://github.com/mde/jake [jshint]: https://github.com/jshint/node-jshint [mocha]: http://visionmedia.github.com/mocha [chai]: http://chaijs.com/ [uglifyjs]: https://github.com/mishoo/UglifyJS