Générateur de dates récurrentes
Tous les 7 jours du 1er janvier au 26 février 2024, on obtient 9 dates, la première et la dernière incluses. Indiquez un début, un intervalle en jours et une fin pour lister chaque date de ce rythme, pour réunions, facturation ou rappels. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Début
- 2024-01-01
- Jours d'intervalle
- 7
- Fin
- 2024-02-26
- Quantité
- 9
- Jours d'étendue
- 56
Un générateur de dates récurrentes répond à une question pratique de planification : étant donné un premier jour civil, un écart fixe en jours entiers et un jour final, quelles dates tombent sur ce rythme dans la fenêtre inclusive ? Les équipes l'utilisent pour des standups bihebdomadaires, des cycles de facturation hebdomadaires, des rappels de médication tous les trois jours et tout planning qui n'est pas une expression cron complète.
Comment la série inclusive à pas de jours est définie
Start est la première occurrence candidate en date de calendrier ISO YYYY-MM-DD ; les datetimes ISO-8601 sont acceptés et seule la partie date de calendrier sert au pas. Interval_days est un entier positif indiquant l'écart en jours entiers entre occurrences consécutives—sept pour hebdomadaire, quatorze pour bihebdomadaire, trente pour un plan simple tous les trente jours, et ainsi de suite. End est la dernière date pouvant figurer dans la liste ; la plage est inclusive, donc si une date échelonnée tombe exactement sur end elle est conservée.
Le moteur convertit start et end en numéros de jour civil sériels avec des formules entières de style Howard Hinnant, puis émet start, start plus l'intervalle, start plus deux fois l'intervalle, et ainsi de suite tant que le jour sériel est inférieur ou égal à end. Si start est après end le tableau dates est vide et count vaut zéro plutôt qu'une erreur, ce qui simplifie les lots.
À quoi sert la liste de dates et ses limites
Appelez le générateur gratuit de dates récurrentes dans le navigateur pour des démos de planification, des contrôles de tableur et des maquettes produit sans installer de bibliothèques de calendrier dans chaque langage. Associez ce point de terminaison à des compteurs de jours ouvrés lorsque vous devez sauter week-ends et jours fériés, ou à des outils de prochaine exécution cron lorsque vous avez besoin d'heures d'horloge murale plutôt qu'une pure liste de jours. Les entrées sources suivent les mêmes règles de rétention que les autres éléments parse KIT.
Préférez des fenêtres à l'échelle du calendrier pour les tableaux d'IU et gardez les séries quotidiennes très denses dans le plafond d'occurrences publié.
Cas d’usage
Grilles de rappels et de médication
Les applications santé et habitudes listent chaque dose ou contrôle tous les N jours entre deux bornes de calendrier sans embarquer de moteurs RRULE complets pour le cas simple d'écart fixe.
Questions fréquentes
Comment générer des dates récurrentes tous les N jours ?
La réponse inclut un tableau dates de chaque occurrence dans la plage inclusive.
Que se passe-t-il si l'intervalle est nul ou négatif ?
Interval_days doit être un entier positif pour que le pas ne puisse pas boucler indéfiniment ; les échecs de validation ne sont pas facturés.
La date de fin est-elle incluse ?
Oui. La plage est inclusive : si une date échelonnée tombe exactement sur end, elle apparaît dans dates. Si start est après end, dates est vide et count vaut zéro.
Utilise-t-il mon fuseau local ou Date JavaScript ?
Non. Le pas utilise une arithmétique pure de jours civils grégoriens sur la seule partie calendrier YYYY-MM-DD, donc les résultats sont déterministes entre hôtes et fuseaux.
Que se passe-t-il si la date de début est après la date de fin ?
Vous obtenez simplement une liste vide et un total de zéro, sans message d'erreur. Cela évite de bloquer un traitement en série lorsqu'une période ne contient aucune date.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/date/recurring-dates \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2024-01-01","interval_days":7,"end":"2024-02-26"}'const res = await fetch("https://api.kit.forhosting.com/date/recurring-dates", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"start": "2024-01-01",
"interval_days": 7,
"end": "2024-02-26"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/recurring-dates",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"start": "2024-01-01",
"interval_days": 7,
"end": "2024-02-26"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/recurring-dates", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"start":"2024-01-01","interval_days":7,"end":"2024-02-26"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"start":"2024-01-01","interval_days":7,"end":"2024-02-26"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/recurring-dates", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"start": "2024-01-01",
"interval_days": 7,
"end": "2024-02-26"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.recurring_dates",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Cette capacité calcule la série par arithmétique pure de jours civils grégoriens, sans toucher l'horloge de l'hôte ni les fuseaux flottants pour la partie date, de sorte que le même JSON revient toujours pour les mêmes entrées. Un intervalle non positif est rejeté en invalid_input afin qu'un pas nul ne tourne pas indéfiniment.
Comment la série inclusive à pas de jours est définie
Fournissez trois champs : start, interval_days et end. Champs manquants, dates mal formées, jours impossibles tels que le trente et un février, et tout intervalle nul ou négatif échouent avec invalid_input et ne sont pas facturés. Des alias optionnels comme from, to et interval se mappent aux mêmes paramètres pour que les appelants SDK utilisent des noms familiers sans changer les mathématiques.
Lire la réponse et choisir un intervalle pratique
Span_days est la différence signée entre les jours sériels de end et start, utile pour les résumés d'IU même si la liste est vide. Inclusive est toujours true pour que les clients n'aient pas à deviner les règles de bord. Utilisez count seul lorsque vous n'avez besoin que du nombre de hits dans un trimestre ; utilisez le tableau dates complet lorsque calendriers, rappels ou exports CSV ont besoin de chaque ligne. En cas de succès la réponse renvoie start et end normalisés en YYYY-MM-DD, l'interval_days que vous avez envoyé, count comme longueur de la série, et dates comme tableau ascendant de chaînes de calendrier ISO. Method est toujours recurring_dates afin que les routeurs aval puissent brancher sans inspecter les formes. Choisissez interval_days pour coller à la cadence réelle : un pour chaque jour, sept pour le même jour de semaine chaque semaine depuis start, quatorze pour une semaine sur deux, et des pas plus grands lorsque vous n'avez besoin que de jalons clairsemés. Le plafond d'interval_days est trois mille six cent cinquante pour qu'une seule requête ne demande pas de pas absurdes sur plusieurs décennies ; le nombre d'occurrences est aussi borné pour la sécurité du Worker, donc les plages très longues avec un pas de un doivent être découpées.
Usage de l'API, tarification, flux de travail et limites
Envoyez un corps JSON avec start, interval_days et end requis. Utilisez l'API prépayée lorsqu'un pipeline de facturation, un service de rappels, un planificateur de cursus ou un runbook d'exploitation a besoin d'un contrat stable sous solde KIT à $0.002 par élément réussi ; les échecs de validation ne consomment jamais le solde après le rejet du moteur. Les auteurs de SDK peuvent mapper le tableau dates directement vers sélecteurs de date, constructeurs ICS et colonnes de table—la même séquence qu'un planificateur écrirait à la main en marquant tous les N jours sur un calendrier mural du premier jour au dernier.
Cas d'intégration
Listes de planification hebdomadaire et bihebdomadaire
Les équipes produit et opérations génèrent des séries du type chaque lundi d'un début connu jusqu'à la fin de trimestre avec interval_days à 7 ou 14 et exportent le tableau dates vers calendriers ou tableurs.
Dates de facture et d'exécution de rapports
Les scripts financiers calculent des jours de facture ou de rapport récurrents avec un écart fixe en jours et épinglent le JSON dans les tests pour que les lots ne dérivent pas entre environnements.
Questions techniques
Le générateur de dates récurrentes est-il gratuit ?
L'outil navigateur s'exécute gratuitement sur votre appareil. Les appels API utilisent le solde KIT prépayé à $0.002 par élément réussi ; les échecs de validation ne sont pas facturés.