Date en année fractionnaire
Le convertisseur d’année fractionnaire transforme une date ISO 8601 explicite en une année décimale telle que 2024.5.
Lancer gratuitement
Il normalise d’abord le décalage fourni en UTC, puis mesure les millisecondes exactes écoulées depuis le début de cette année UTC et les divise par sa durée totale. La partie entière indique l’année UTC et la partie décimale situe l’instant dans celle-ci. Aucun accès à l’horloge, à la position, au réseau ou à une valeur implicite n’intervient : une même entrée produit toujours une même sortie.
Ce que représente une année décimale fractionnaire
Une année fractionnaire réunit dans un seul nombre le millésime civil et une position continue au sein de cette année. La partie entière correspond à l’année civile UTC contenant l’instant fourni. La partie décimale est la durée exacte écoulée depuis le 1er janvier à 00:00:00.000 UTC, divisée par la durée de l’année entière. Ainsi, le premier instant de 2024 vaut exactement 2024 et le milieu de cette année bissextile vaut 2024.5. À la fin de 2024, le résultat s’approche de 2025 sans jamais l’atteindre ; le premier instant de 2025 appartient à la nouvelle année et vaut exactement 2025. Cette définition repose sur une durée, non sur un décompte de pages de calendrier, de dates achevées, de mois, de trimestres ou de jours ouvrés. Heures, minutes, secondes et millisecondes contribuent proportionnellement. La réponse fournit la date normalisée en UTC, l’année UTC retenue, les millisecondes écoulées et le total annuel. Vous pouvez donc contrôler chaque élément ou vérifier le calcul séparément lorsqu’une coordonnée annuelle compacte est plus pratique qu’un horodatage, tout en conservant l’identité de l’année civile.
Effet de la normalisation UTC et des années bissextiles
L’entrée doit désigner un instant réel avec Z ou un décalage numérique tel que +05:30 ou -04:00. Le convertisseur applique ce décalage avant de choisir l’année et de mesurer la durée écoulée. Cet ordre est essentiel aux changements d’année : une heure locale juste après minuit le 1er janvier peut encore correspondre au 31 décembre UTC, tandis qu’une heure locale tardive de décembre peut déjà correspondre au 1er janvier UTC. Les règles grégoriennes des années bissextiles s’appliquent ensuite à l’année UTC obtenue. Les années divisibles par quatre comptent 366 jours, sauf les années séculaires non divisibles par quatre cents ; les autres en comptent 365. Le dénominateur varie donc avec l’année et évite la dérive d’une durée fixe de 365 jours. Chaque jour civil vaut exactement 86,400 secondes et les secondes intercalaires ne sont pas ajoutées. L’analyseur refuse les décalages absents ou incorrects, les dates impossibles, le 29 février d’une année commune, les heures supérieures à 23, les minutes ou secondes supérieures à 59 et plus de trois chiffres de milliseconde. Refuser vaut mieux que deviner un fuseau, car une supposition nuirait à la reproductibilité entre systèmes et navigateurs.
Emploi dans les données et les travaux scientifiques
Les années fractionnaires offrent des coordonnées compactes aux observations réparties sur plusieurs années civiles. Un pipeline de séries temporelles peut convertir les horodatages munis d’un décalage avant une régression, une interpolation, un tracé ou un export, afin d’attribuer à chaque ligne une valeur numérique triable tout en conservant l’horodatage original. Les rapports scientifiques utilisent souvent les années décimales pour placer des mesures sur un axe annuel, et une migration peut devoir reproduire les valeurs d’anciens outils analytiques. La réponse déterministe convient aussi aux tests : Nouvel An, jour bissextile, milieu d’année, franchissement de fuseau et dernière milliseconde peuvent être figés sans simuler l’horloge système. Conservez la définition avec les données, car certains logiciels emploient un nombre de jours, une convention fondée sur midi, des années fixes de 365.25 jours ou un autre arrondi. Cette capacité divise les millisecondes UTC exactes écoulées par la durée exacte de l’année grégorienne proleptique UTC concernée. N’arrondissez qu’au moment d’afficher un graphique ou un rapport. Ne remplacez pas un horodatage absolu par cette valeur si vous exigez une conversion réversible ou l’ordre d’instants extrêmement proches. Une requête API réussie coûte $0.002 ; le même calcul pur peut aussi s’exécuter dans le navigateur.
Cas d’usage
Normaliser des observations temporelles
Convertissez des horodatages avec décalage en coordonnées annuelles continues pour le tracé, la régression et l’interpolation.
Reproduire les axes de rapports scientifiques
Générez des années fractionnaires vérifiables selon une convention grégorienne UTC documentée.
Créer des jeux de test déterministes
Testez les années bissextiles et les passages de fuseau sans consulter ni simuler l’heure système.
Questions fréquentes
Quelle formule est appliquée ?
Le résultat additionne l’année UTC et les millisecondes écoulées depuis son début divisées par le total des millisecondes de cette année UTC.
Pourquoi la date doit-elle inclure un fuseau ?
Sans Z ni décalage numérique, le texte ne désigne pas un instant unique et peut donner des réponses différentes selon l’environnement.
Comment les années bissextiles sont-elles traitées ?
L’année UTC concernée compte 366 jours selon les règles grégoriennes, et 365 jours dans les autres cas.
Les secondes intercalaires sont-elles incluses ?
Non. Chaque jour civil vaut exactement 86,400 secondes afin de garantir un résultat déterministe et portable.
Quel est le prix d’un calcul par API ?
Chaque requête API réussie coûte $0.002. Le calcul pur peut aussi s’exécuter localement 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/fractional-year \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2024-07-02T00:00:00Z"}'const res = await fetch("https://api.kit.forhosting.com/date/fractional-year", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2024-07-02T00:00:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/fractional-year",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2024-07-02T00:00:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/fractional-year", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2024-07-02T00:00:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2024-07-02T00:00:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/fractional-year", 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": "2024-07-02T00:00:00Z"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.fractional_year",
"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. |