stdlib-js/stdlib

[RFC]: Time Series Generation Module

Opened this issue ยท 2 comments

Description

This RFC proposes the addition of a Time Series Generation module to @stdlib/time module. This module will facilitate the creation of sequences of dates or timestamps based on various patterns or intervals, catering to the needs of applications requiring regularly spaced time data.

The Time Series Generation module will offer flexibility in defining intervals, allowing users to specify common patterns such as daily, weekly, monthly, quarterly, or yearly intervals. Additionally, users will have the option to define custom intervals with arbitrary durations to suit specific requirements.

Key features of the Time Series Generation module include support for specifying start and end dates for the time series, handling of leap years.

This module aims to provide a convenient and efficient solution for generating time series data, enabling users to perform tasks such as financial analysis, data visualization, and scheduling with ease and accuracy.

Example for how this function can be called

const { generateTimeSeries } = require('@stdlib/time');

const startDate = new Date('2024-01-01');
const endDate = new Date('2024-12-31');

const customSeries = generateTimeSeries({
    interval: {
        unit: 'month',
        value: 3 // every 3 months
    },
    start: startDate,
    end: endDate,
format: 'YYYY-MM-DD'
});

console.log(customSeries);
/*
[
    '2024-01-01',
    '2024-04-01',
    '2024-07-01',
    '2024-10-01'
]
*/

If this feature request gets the green light, I'd be happy trying implementing it.

Related Issues

N/A

Questions

No.

Other

No.

Checklist

  • I have read and understood the Code of Conduct.
  • Searched for existing issues and pull requests.
  • The issue name begins with RFC:.

๐Ÿ‘‹ Hi there! ๐Ÿ‘‹

And thank you for opening your first issue! We will get back to you shortly. ๐Ÿƒ ๐Ÿ’จ

For reference, while this RFC proposes a more configurable API, I'll note that we already have @stdlib/array/datespace.

I don't think the format option is particularly desirable. However, the ability to specify an increment is desirable. In which case, personally, I can possibly see an argument to add @stdlib/array/incrdatespace (similar to @stdlib/array/incrspace). However, one could also use incrspace already for this purpose; it just wouldn't be as convenient as returning Date objects directly.