@stdlib/array-datespace
v0.2.2
Published
Generate an array of linearly spaced dates.
Downloads
7
Readme
Datespace
Generate an array of linearly spaced dates.
Installation
npm install @stdlib/array-datespace
Usage
var datespace = require( '@stdlib/array-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 end = '2014-12-02T07:00:54.973Z';
var start = new Date( end ) - 60000;
var arr = datespace( start, end, 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.
// JavaScript timestamps:
var end = 1417503654973;
var start = new Date( end - 60000 );
var arr = datespace( start, end, 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:
end = 1417503655;
start = end - 60;
arr = datespace( start, end, 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():
arr = datespace( 1417503655000, 1417503655001, 3, {
'round': 'round'
});
// returns [ 1417503655000, 1417503655001, 1417503655001 ]
Examples
var datespace = require( '@stdlib/array-datespace' );
var start;
var arr;
var end;
end = '2014-12-02T07:00:54.973Z';
start = new Date( end ) - 100000;
// Default behavior:
arr = datespace( start, end );
console.log( arr.join( '\n' ) );
// Specify length:
arr = datespace( start, end, 10 );
console.log( arr.join( '\n' ) );
arr = datespace( start, end, 11 );
console.log( arr.join( '\n' ) );
// Create an array with decremented values:
arr = datespace( end, start, 11 );
console.log( arr.join( '\n' ) );
See Also
@stdlib/array-linspace
: generate a linearly spaced array over a specified interval.@stdlib/array-logspace
: generate a logarithmically spaced numeric array.
Notice
This package is part of stdlib, a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
For more information on the project, filing bug reports and feature requests, and guidance on how to develop stdlib, see the main project repository.
Community
License
See LICENSE.
Copyright
Copyright © 2016-2024. The Stdlib Authors.