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
Markdown
# 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