Humaniser une durée
Saisissez une durée en secondes et obtenez un texte lisible d'un coup d'œil : 183840 secondes donnent « 2 days 3 hours 4 minutes », soit 2 jours, 3 heures et 4 minutes. Les unités nulles sont omises et la phrase est en anglais. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Longueur de la durée en secondes
- 183 840
- Secondes d’entrée
- 183 840
- Jours
- 2
- Heures
- 3
- Minutes (m)
- 4
Un formateur de durée humanisée répond à une question pratique qui revient dans les journaux, les tableaux de bord et les textes produit : étant donné une longueur de temps exprimée en nombre brut de secondes, que doit lire une personne ? Saisissez une durée non négative en secondes et cet outil renvoie une phrase compacte construite à partir de jours, heures, minutes et secondes entiers — par exemple cent quatre-vingt-trois mille huit cent quarante secondes deviennent deux jours, trois heures et quatre minutes. Les ingénieurs support qui expliquent des fenêtres d’incident, les développeurs qui écrivent des chaînes attendues pour des tests unitaires, les enseignants qui notent des exercices de temps écoulé et les équipes produit qui peaufinent des états vides ont besoin de la même formulation déterministe sans importer une lourde bibliothèque i18n.
Ce que signifie humaniser une durée et quelles unités apparaissent
Une durée est une longueur de temps, pas un horodatage de calendrier. Lorsque les systèmes stockent le temps écoulé, ils utilisent presque toujours un compte non négatif de secondes, car cette unité est facile à additionner, soustraire et sérialiser. Les humains, en revanche, peinent à lire d’un coup d’œil de grands totaux de secondes : quatre-vingt-dix secondes sont clairement une minute et demie, mais cent quatre-vingt-trois mille huit cent quarante secondes ne se lisent pas comme deux jours et quelques heures.
Humaniser signifie décomposer ce total selon l’échelle familière de jours entiers de quatre-vingt-six mille quatre cents secondes, d’heures de trois mille six cents secondes, de minutes de soixante secondes et des secondes restantes. Les unités intermédiaires nulles sont omises pour garder la phrase courte — un jour cinq minutes plutôt qu’un jour zéro heures cinq minutes — tandis qu’une entrée entièrement nulle imprime encore zéro secondes afin que l’appelant ne reçoive jamais une chaîne vide.
Les libellés au singulier et au pluriel suivent la grammaire ordinaire : une heure contre deux heures, une minute contre deux minutes.
Conseils pratiques, limites et recherches associées
Préférez envoyer des nombres plutôt que des chaînes préformatées lorsque vous contrôlez le client ; les chaînes numériques ne sont acceptées que si elles correspondent à un motif numérique fini strict. Gardez les durées dans le maximum publié pour que de grandes multiplications ne deviennent jamais non finies.
Pour enseigner ou tester, conservez un petit jeu connu : un succès multi-unités comme deux jours trois heures quatre minutes, un mélange court comme une minute trente secondes, un cas zéro secondes, une entrée fractionnaire qui se tronque proprement et un échec négatif volontaire. Les contrôles aller-retour sont simples : recalculez days multiplié par quatre-vingt-six mille quatre cents plus hours multiplié par trois mille six cents plus minutes multiplié par soixante plus secondes et confirmez que la somme égale le champ de secondes entières publié.
Cette page cible les personnes qui cherchent un formateur de durée humanisée, secondes en jours heures minutes, ou temps écoulé lisible en ligne ; ce n’est ni un formateur de date calendaire, ni un convertisseur de fuseau, ni un moniteur d’uptime, ni un adoucisseur de prose.
Préférez cette capacité lorsque vous avez déjà un compte de secondes et n’avez besoin que d’une phrase stable ; si vous avez besoin de noms de mois ou d’étiquettes de jour de la semaine à partir d’une date calendaire, utilisez une capacité de formatage de date ou de jour de la semaine. Documentez la règle de floor dans les commentaires client pour que les rédacteurs produit sachent qu’une demi-seconde n’est jamais arrondie à la seconde supérieure dans cet outil.
Cas d’usage
Textes de temps écoulé pour incidents et SLA
Les pages de statut et post-mortems convertissent des compteurs bruts de secondes en phrases comme deux heures quinze minutes que les non-ingénieurs lisent sans calcul mental.
Chaînes attendues pour tests de minuteurs
Les équipes d’ingénierie figent des libellés humanisés pour comptes à rebours, durées de jobs et longueurs média afin que les captures d’UI restent déterministes entre navigateurs.
Exercices scolaires de temps écoulé
Les élèves envoient un total en secondes et comparent le découpage imprimé jours-heures-minutes-secondes à un résultat déterministe avant de rendre les feuilles.
Questions fréquentes
Quelle entrée le formateur de durée humanisée accepte-t-il ?
Les valeurs fractionnaires sont tronquées en secondes entières.
Que se passe-t-il avec une durée négative ?
Les longueurs négatives sont rejetées plutôt qu’absolutisées ou embelles.
Quelles unités apparaissent dans la chaîne lisible ?
Jours, heures, minutes et secondes entiers. Les unités intermédiaires nulles sont omises ; une durée nulle s’imprime «0 seconds».
Formate-t-il des dates calendaires ou des horodatages ?
Non. Il n’humanise que la longueur d’une durée pure. Utilisez des outils de formatage de date ou de jour de la semaine pour une date calendaire.
Le formateur de durée humanisée est-il gratuit ?
L’outil navigateur est gratuit et s’exécute en local.
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/humanize-duration \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"seconds":183840}'const res = await fetch("https://api.kit.forhosting.com/date/humanize-duration", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"seconds": 183840
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/humanize-duration",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"seconds": 183840
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/humanize-duration", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"seconds":183840}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"seconds":183840}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/humanize-duration", 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
{
"seconds": 183840
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.humanize_duration",
"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
max_seconds | 1000000000000 |
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
Zéro est autorisé et s’imprime comme zéro secondes ; les valeurs négatives sont rejetées avec une erreur invalid_input claire plutôt qu’une valeur absolue trompeuse. Le chemin est de l’arithmétique entière pure — pas de réseau, pas de graines aléatoires, pas de dépendance à l’horloge Date —, de sorte que l’exécuteur gratuit du navigateur et l’API prépayée renvoient le même JSON après troncature des entrées fractionnaires à chaque appel.
Ce que signifie humaniser une durée et quelles unités apparaissent
Les longueurs négatives sont hors intention produit : un compteur d’écoulé qui recule est une erreur de données, pas une phrase à enjoliver, donc la validation échoue avec invalid_input en nommant le champ seconds.
Comment appeler l’API et ce qui est renvoyé
Les entrées fractionnaires sont acceptées et tronquées (floor) en secondes entières avant le découpage par unités, afin que le bruit flottant ne bascule pas une frontière quasi entière. Lorsque vous affirmez des résultats dans des tests, préférez comparer le champ human (ou text) et le détail numérique plutôt que de reconstruire les libellés à la main, car les formes singulier et pluriel font partie du contrat publié. Envoyez un corps JSON avec un nombre fini obligatoire nommé seconds, qui peut aussi être fourni sous les alias duration, value, secs ou s. Les valeurs absolues doivent rester dans le maximum publié d’un billion de secondes afin que les produits intermédiaires restent finis sur le Worker et dans le navigateur. En cas de succès la réponse renvoie seconds comme total entier tronqué, éventuellement input_seconds lorsque la valeur brute différait, days, hours, minutes et secs comme entiers non négatifs qui recombinent le total, human et text comme la même phrase lisible, message comme une courte phrase de synthèse et steps comme un tableau ordonné décrivant le floor et la décomposition. Une validation échouée — champ manquant, nombres non finis, valeurs au-dessus du maximum ou durée négative — renvoie invalid_input et n’est jamais facturée. Le tarif est un forfait $0.002 par requête réussie avec unité item et prix marginal nul.
Conseils pratiques, limites et recherches associées
Les tâches en échec qui renvoient invalid_input ne consomment pas le solde prépayé, ce qui maintient les scripts exploratoires bon marché lorsque les apprenants envoient volontairement des valeurs négatives.