Ajouter des trimestres à une date avec ajustement de fin de mois
Ce calculateur décale une date ISO explicite d’un nombre entier signé de trimestres.
Lancer gratuitement
Chaque trimestre correspond exactement à trois mois calendaires : un trimestre après le 30 novembre tombe en février de l’année suivante, tandis que quatre trimestres avancent d’une année civile. Si le jour initial n’existe pas dans le mois d’arrivée, il est ramené au dernier jour valide. Le calcul repose sur une arithmétique grégorienne déterministe exprimée en termes UTC, sans objet Date de JavaScript, horloge, conversion de fuseau horaire, réseau ni hasard. Vous pouvez l’exécuter gratuitement dans le navigateur ou utiliser l’API au tarif de $0.002 par requête réussie pour intégrer une sortie structurée et reproductible à un traitement automatisé.
Ce que signifie ajouter des trimestres calendaires
Un trimestre calendaire regroupe trois mois consécutifs ; ce n’est pas une durée fixe en jours, heures ou secondes. Ajouter un trimestre avance donc le mois de trois unités tout en conservant le numéro du jour lorsqu’il existe à destination. Quatre trimestres avancent de douze mois et donnent normalement le même mois et le même jour l’année suivante. La date doit respecter strictement la forme YYYY-MM-DD et désigner un jour grégorien réel ; quarters doit être un entier. Une valeur positive avance, une valeur négative recule et zéro conserve la date. Cette définition évite l’ambiguïté d’un trimestre assimilé à quatre-vingt-dix jours, car la durée réelle varie avec les mois et les années bissextiles. La réponse reprend la date normalisée et le nombre de trimestres, fournit la date ISO obtenue et ses composantes, indique le nombre équivalent de mois, précise si un ajustement a eu lieu et donne la longueur du mois d’arrivée. Aucune heure n’est acceptée ni déduite : il s’agit d’un calcul de calendrier civil et non de temps écoulé. Le résultat reste donc identique quel que soit le lieu d’exécution ou le fuseau horaire de l’appelant.
Validation et ajustement de fin de mois
Le calculateur exige d’abord quatre chiffres pour l’année, deux pour le mois et deux pour le jour, séparés par des tirets. Il vérifie ensuite le calendrier grégorien : le mois doit aller de 01 à 12, le jour doit exister et le 29 février n’est admis que les années divisibles par quatre, sauf les siècles non divisibles par quatre cents. L’algorithme transforme l’année et le mois en indice mensuel entier, multiplie le nombre signé de trimestres par trois, ajoute ce décalage puis reconstitue l’année et le mois d’arrivée. Le jour initial est comparé à la longueur de ce mois. S’il existe, il est conservé ; sinon, le dernier jour est retenu et clamped vaut true. Ainsi, le 30 novembre plus un trimestre arrive au 28 février d’une année commune ou au 29 d’une année bissextile. Toute opération sortant de la plage 0001 à 9999 est refusée. Toutes les étapes emploient des entiers finis, sans Date, horloge, noms localisés ni règles de fuseau dépendant de l’environnement.
Usages concrets et intégration reproductible
Les décalages trimestriels servent aux rapports financiers, renouvellements, contrôles de conformité, prévisions, formations et tests logiciels. Une équipe financière peut projeter la prochaine révision depuis une clôture trimestrielle sans remplacer discrètement le trimestre par quatre-vingt-dix jours. Les équipes produit peuvent avancer une échéance de renouvellement et vérifier si un mois court a modifié le jour. Les analystes créent des bornes de cohortes et les développeurs des jeux d’essai identiques dans tous les environnements. Les valeurs négatives permettent de retrouver une date comparable un ou quatre trimestres auparavant. Puisque l’entrée contient une date complète et que le moteur ne lit jamais l’heure actuelle, une même requête produit toujours la même réponse. Cette propriété convient aux assertions CI, aux caches, à la documentation reproductible et aux chaînes auditées. L’exécution dans le navigateur est gratuite ; via l’API, chaque élément réussi coûte $0.002 et toute entrée invalide est rejetée. Préférez un outil de durée pour un nombre exact de jours écoulés ou un calendrier professionnel pour les jours ouvrés. Cette capacité se limite volontairement à l’ajout de trimestres entiers de trois mois avec conservation ou ajustement prévisible du jour.
Cas d’usage
Planification des renouvellements trimestriels
Avancez un contrat ou un anniversaire d’abonnement d’une ou plusieurs périodes de trois mois avec une règle explicite de fin de mois.
Comparaisons de rapports
Reculez d’un ou quatre trimestres pour obtenir des dates reproductibles de comparaison avec le trimestre ou l’année précédente.
Jeux d’essai calendaires
Produisez des sorties ISO déterministes pour les années bissextiles, changements d’année et mois courts sans utiliser Date.
Questions fréquentes
Quelle est la durée d’un trimestre dans ce calculateur ?
Un trimestre représente exactement trois mois calendaires, et non quatre-vingt-dix jours ou un nombre fixe de secondes.
Puis-je soustraire des trimestres ?
Oui. Indiquez un entier négatif dans quarters pour reculer. Le résultat doit rester compris entre les années 0001 et 9999.
Que se passe-t-il si le mois d’arrivée ne contient pas le jour initial ?
Le jour est ramené au dernier jour valide du mois d’arrivée et le champ clamped de la réponse vaut true.
Le calcul emploie-t-il un fuseau horaire ou la date actuelle ?
Non. L’entrée est une date explicite et le calcul utilise des entiers déterministes sans Date, horloge ni conversion de fuseau.
Quel est le prix d’une requête API ?
L’exécution dans le navigateur est gratuite. Une requête API réussie coûte $0.002 ; les entrées invalides ou hors limites sont refusées.
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/add-quarters \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2024-11-30","quarters":1}'const res = await fetch("https://api.kit.forhosting.com/date/add-quarters", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"date": "2024-11-30",
"quarters": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/add-quarters",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"date": "2024-11-30",
"quarters": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/add-quarters", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"date":"2024-11-30","quarters":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"date":"2024-11-30","quarters":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/add-quarters", 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
{
"date": "2024-11-30",
"quarters": 1
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.add_quarters",
"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.
Limites
year_min | 1 |
year_max | 9999 |
quarters_min | -39996 |
quarters_max | 39996 |
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. |