Package Exports
- compute-datespace
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (compute-datespace) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
datespace
Generates an array of linearly spaced dates.
Installation
$ npm install compute-datespace
For use in the browser, use browserify.
Usage
To use the module,
var datespace = require( 'compute-datespace' );
datespace( start, stop[, length, opts] )
Generates an array
of linearly spaced Date
objects. If a length
is not provided, the default output array
length is 100
.
var stop = '2014-12-02T07:00:54.973Z',
start = new Date( stop ) - 60000;
var arr = datespace( start, stop, 6 );
/* returns [
'Mon Dec 01 2014 22:59:54 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:06 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:18 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:30 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:42 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:54 GMT-0800 (PST)'
]
*/
The start
and stop
times may be either Date
objects, date strings, Unix timestamps, or JavaScript timestamps.
var start, stop, arr;
// JavaScript timestamps:
stop = 1417503654973;
start = new Date( stop - 60000 );
arr = datespace( start, stop, 6 );
/* returns [
'Mon Dec 01 2014 22:59:54 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:06 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:18 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:30 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:42 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:54 GMT-0800 (PST)'
]
*/
// Unix timestamps:
stop = 1417503655;
start = stop - 60;
arr = datespace( start, stop, 6 );
/* returns [
'Mon Dec 01 2014 22:59:54 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:06 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:18 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:30 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:42 GMT-0800 (PST)',
'Mon Dec 01 2014 23:00:54 GMT-0800 (PST)'
]
*/
The output array
is guaranteed to include the start
and end
times. Beware, however, that values between the start
and end
are subject to rounding errors. For example,
var arr = datespace( 1417503655000, 1417503655001, 3 );
// returns [ 1417503655000, 1417503655000, 1417503655001 ]
where sub-millisecond values are truncated by the Date
constructor. Duplicate values should only be a problem when the interval separating consecutive times is less than a millisecond. As the interval separating consecutive dates goes to infinity, the quantization noise introduced by millisecond resolution is negligible.
By default, fractional timestamps are floored. To specify that timestamps always be rounded up or to the nearest millisecond when converted to Date
objects, set the round
option (default: floor
).
// Equivalent of Math.ceil():
var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'ceil' } );
// returns [ 1417503655000, 1417503655001, 1417503655001 ]
// Equivalent of Math.round():
var arr = datespace( 1417503655000, 1417503655001, 3, { 'round': 'round' } );
// returns [ 1417503655000, 1417503655001, 1417503655001 ]
Notes
This function is similar to compute-linspace.
Examples
var datespace = require( 'compute-datespace' ),
start,
stop,
arr;
stop = '2014-12-02T07:00:54.973Z';
start = new Date( stop ) - 100000;
// Default behavior:
arr = datespace( start, stop );
console.log( arr.join( '\n' ) );
// Specify length:
arr = datespace( start, stop, 10 );
console.log( arr.join( '\n' ) );
arr = datespace( start, stop, 11 );
console.log( arr.join( '\n' ) );
// Create an array with decremented values:
arr = datespace( stop, start, 11 );
console.log( arr.join( '\n' ) );
To run the example code from the top-level application directory,
$ node ./examples/index.js
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2014. Athan Reines.