Fraction de l’année écoulée
Ce calculateur de progression annuelle renvoie la fraction de l’année civile UTC écoulée à une date-heure ISO 8601 explicite.
Lancer gratuitement
Il convertit en UTC l’heure accompagnée de Z ou d’un décalage numérique, mesure exactement les millisecondes depuis le 1er janvier à 00:00:00 UTC, puis divise cette durée par celle de l’année UTC obtenue. Une année bissextile compte 366 jours, contre 365 pour une année commune. La date actuelle, le fuseau local, le réseau, le hasard et les valeurs implicites ne peuvent pas modifier le résultat.
Définition de la fraction d’année écoulée
La fraction renvoyée mesure en continu la progression dans une année civile UTC. Son numérateur est le nombre de millisecondes entre le 1er janvier à 00:00:00.000 UTC et l’instant fourni ; son dénominateur est le nombre de millisecondes de toute cette année UTC. Au premier instant du 1er janvier, le résultat vaut exactement zéro. Il augmente ensuite pendant l’année, tout en restant inférieur à un pour chaque date-heure valide de cette année. La valeur un correspond au premier instant de l’année suivante, qui appartient déjà à une nouvelle année et relance le calcul à zéro. Cette définition diffère d’un pourcentage fondé sur le rang du jour, qui compterait des dates entières ou considérerait la journée en cours comme terminée. Midi représente la moitié de la date, les secondes apportent leur part exacte et jusqu’à trois décimales de seconde sont conservées sous forme de millisecondes. Le dénominateur vaut 365 jours pour une année commune et 366 pour une année bissextile grégorienne. Le décalage étant normalisé avant le choix de l’année UTC, une heure écrite tard le 31 décembre dans un autre fuseau peut appartenir au 1er janvier UTC suivant.
Fournir une date-heure ISO sans ambiguïté
Envoyez datetime sous la forme YYYY-MM-DDTHH:mm:ssZ. Vous pouvez ajouter une à trois décimales de seconde ou remplacer Z par un décalage signé comme +05:30 ou -04:00. L’indication du fuseau est obligatoire, car une date-heure qui en est dépourvue ne désigne pas un instant unique. Les dates seules, les formats locaux, les noms de mois, les espaces à la place de T et les décalages sans deux-points sont refusés plutôt qu’interprétés arbitrairement. L’analyseur contrôle aussi la longueur des mois grégoriens, les jours bissextiles, les heures, les minutes, les secondes et les composantes du décalage. Les secondes intercalaires ne sont pas acceptées : les secondes vont de 00 à 59, conformément au modèle déterministe de minute civile. Après analyse, le décalage est appliqué par calcul entier et l’instant obtenu apparaît dans utc_datetime. La réponse fournit aussi utc_year, elapsed_milliseconds et year_milliseconds afin que vous puissiez vérifier la fraction sans réimplémenter le calendrier. Deux chaînes représentant le même instant avec des décalages différents donnent la même date normalisée et la même fraction. Une requête automatisée réussie coûte $0.002 ; le calcul peut également s’exécuter localement dans le navigateur.
Usages d’un rapport annuel déterministe
Utilisez cette capacité lorsqu’un modèle, une visualisation, un rapport ou un test exige une position stable dans l’année civile, et non une réponse dépendant de l’heure d’exécution d’une machine. Un tableau de bord peut convertir la fraction en pourcentage ou en barre de progression tout en conservant le numérateur et le dénominateur exacts pour les libellés et les audits. Un pipeline de données peut enrichir des enregistrements horodatés avec une coordonnée annuelle normalisée destinée à l’analyse saisonnière, à l’interpolation ou aux variables cycliques, puisque les entrées décalées sont comparées sur la même chronologie UTC. Les tests peuvent figer des cas limites au Nouvel An, le jour bissextile ou à la dernière milliseconde de décembre sans simuler d’horloge. Le résultat repose sur une durée écoulée : il ne convient donc pas au décompte des dates achevées, des jours ouvrés, des exercices fiscaux ou de mois supposés égaux. Il modélise volontairement les jours civils UTC comme 86 400 secondes et n’ajoute aucune seconde intercalaire, ce qui garantit sa portabilité. Pour obtenir un pourcentage, multipliez fraction par cent et n’arrondissez qu’à l’affichage. Pour un exercice fiscal, employez les bornes du calendrier concerné.
Cas d’usage
Tableaux de progression annuelle
Transformez un horodatage explicite en position exacte de zéro à un dans l’année UTC pour des barres de progression et indicateurs KPI.
Variables d’analyse saisonnière
Ajoutez aux données horodatées une coordonnée annuelle continue et cohérente après normalisation de leurs décalages explicites en UTC.
Tests déterministes aux limites
Créez des jeux d’essai reproductibles autour du Nouvel An et du jour bissextile sans lire ni simuler l’horloge système.
Questions fréquentes
La fraction peut-elle être égale à un ?
Non pour un instant situé dans l’année UTC sélectionnée. Le premier instant de l’année suivante appartient à cette nouvelle année et renvoie zéro.
Comment les années bissextiles sont-elles traitées ?
Le dénominateur utilise 366 jours si l’année UTC est divisible par quatre, sauf les années séculaires non divisibles par quatre cents ; sinon, il utilise 365 jours.
Pourquoi le fuseau horaire est-il obligatoire ?
Sans Z ni décalage numérique, une date-heure ISO locale ne désigne pas un instant UTC unique et pourrait produire des réponses différentes selon l’environnement.
Le calcul inclut-il les secondes intercalaires ?
Non. Il emploie des jours civils fixes de 86 400 secondes et accepte les secondes de 00 à 59 afin de produire un rapport calendaire portable et déterministe.
Combien coûte une requête API ?
Un calcul API réussi coûte $0.002 par requête. La même opération pure est aussi disponible dans le navigateur.
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/fraction-of-year-elapsed \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2026-07-02T12:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/fraction-of-year-elapsed", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2026-07-02T12:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/fraction-of-year-elapsed",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2026-07-02T12:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/fraction-of-year-elapsed", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2026-07-02T12:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2026-07-02T12:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/fraction-of-year-elapsed", 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
{
"datetime": "2026-07-02T12:00:00Z"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.fraction_of_year_elapsed",
"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. |