Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smhg/date-frequency-js
JavaScript temporal frequency library
https://github.com/smhg/date-frequency-js
Last synced: about 2 months ago
JSON representation
JavaScript temporal frequency library
- Host: GitHub
- URL: https://github.com/smhg/date-frequency-js
- Owner: smhg
- License: mit
- Created: 2013-09-04T13:39:04.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2021-09-22T09:37:28.000Z (over 3 years ago)
- Last Synced: 2024-11-14T05:53:37.653Z (about 2 months ago)
- Language: JavaScript
- Homepage:
- Size: 127 KB
- Stars: 9
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
frequency [![ci](https://github.com/smhg/date-frequency-js/actions/workflows/ci.yml/badge.svg)](https://github.com/smhg/date-frequency-js/actions/workflows/ci.yml)
=========
> Temporal frequency library## Installation
```sh
npm install --save date-frequency
```## Usage
```javascript
createFrequency()
.on('hour', 10)
.on('minute', 30)
.next(); // next occurence of 10:30// or, with a ISO-inspired string format
createFrequency('FT10M30')
.next(); // next occurence of 10:30createFrequency()
.on('day', 2, 'week')
.next(); // next Tuesday// all occurences of 10:00:00 in the next 5 days
const d = new Date();
createFrequency()
.on('hour', 10)
.on('m', 0)
.on('s', 0)
.between(d, (new Date(+d)).setDate(d.getDate() + 5));
```## Methods
### createFrequency()
Constructor takes a string notation or rules object.
```javascript
createFrequency('F3D/WT10H30M0S'); // every Wednesday at 10:30:00// equals to:
createFrequency({D: {W: 3}, h: {D: 10}, m: {h: 30}, s: {m: 0}});
```### .on(unit, value[, scope])
Add frequency rules by specifying a unit, a value to fix it to and, optionally, a scope.
```javascript
frequency.on('hour', 10).on('minute', 0).on('second', 0);
// each day at 10:00:00frequency.on('day', 6).on('m', 30);
// each 30 minutes after the hour of the 6th day of each monthfrequency.on('d', 7, 'week');
// Sundays at midnight
```The value argument can also be a string which matches the name of a predefined function available in the `fn` property of the constructor.
```javascript
createFrequency.fn.even = require('number-kind').even;
createFrequency()
.on('week', 'even', 'epoch')
.on('h', 0)
.on('m', 0)
.on('s', 0);
// days of even weeks at midnight
```### .next([date])
Returns the next occurence of the frequency after _or on_ the specified date. Please note that you are responsible for incrementing the date if you want to call `.next()` multiple times to get consecutive occurences.
If no date is specified, `new Date()` is used.### .between(start, end)
Returns all occurences of the frequency between (and including) the specified start and end date.### .toString()
Returns a string notation of the frequency.## Development
* Clone repo & `npm install`.
* Lint: `npm run lint`.
* Test: `npm test`.