ForHosting KIT · Dates et temps

Durée totale d'intervalles de temps

Collez une liste d'intervalles de temps et obtenez le temps réellement couvert : 10:00-12:00 et 11:00-13:00 UTC couvrent 3 heures, et non les 5 d'une simple somme. Les intervalles qui se chevauchent ou se touchent sont d'abord fusionnés. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Les équipes d’exploitation, les scripts de paie et les outils de SLA gèrent souvent de nombreux intervalles de temps explicites qui se chevauchent : astreintes, réservations d’équipements, fenêtres d’indisponibilité ou sessions facturables. Sommer chaque intervalle de façon naïve compte deux fois les minutes partagées. Ce calculateur de durée totale d’intervalles de temps accepte une liste de paires début et fin ISO-8601, normalise chaque borne en UTC absolu par arithmétique grégorienne pure, fusionne les intervalles qui se chevauchent ou se touchent, et renvoie la longueur de la plage couverte en millisecondes, secondes et heures, plus une décomposition en jours, heures, minutes et secondes. Les réservations adjacentes qui se rejoignent à une extrémité deviennent un segment continu, de sorte qu’un point de contact de longueur nulle n’enfle jamais le total.

Ce que signifie la durée couverte après fusion des chevauchements

La durée couverte mesure l’union de vos intervalles sur la ligne de temps absolue, et non la somme de chaque longueur brute. Si Alice réserve de dix heures à douze heures et Bob de onze heures à treize heures le même jour UTC, la somme naïve est de cinq heures, alors que la plage couverte n’est que de trois heures de dix à treize.

Ce point d’accès applique l’algorithme classique de tri et fusion : chaque début et fin est converti en millisecondes d’époque UTC, la liste est ordonnée par heure de début, et chaque intervalle suivant soit prolonge le segment ouvert courant lorsqu’il commence à la fin de ce segment ou avant, soit ouvre un nouveau segment lorsqu’il existe un écart positif.

Les intervalles qui se touchent, par exemple se terminer à douze et commencer à douze, fusionnent en un bloc continu, le modèle correct de temps continu pour la couverture, l’occupation et la disponibilité SLA. Les intervalles de longueur nulle et inversés sont rejetés car ils ne définissent pas une plage ouverte positive.

Contrat d’entrée, bornes ISO et forme de la réponse

Chaque objet doit inclure les champs chaîne start et end au format ISO-8601 : année à quatre chiffres, mois et jour, éventuellement suivis d’une heure du jour avec heures, minutes, secondes et une partie fractionnaire optionnelle de seconde. Un Z final signifie UTC ; un décalage numérique tel que plus zéro deux deux-points zéro zéro ou moins zéro cinq deux-points zéro zéro décale les champs locaux en UTC absolu avant la fusion.

Les valeurs date seule sont traitées comme minuit UTC afin que les fenêtres journalières fonctionnent sans inventer une horloge. Les champs optionnels nuls ne sont jamais émis. Une validation en échec ne consomme pas le solde.

Où le total du temps couvert rend service

Les plateformes d’effectifs et d’astreinte fusionnent des fragments de vacation pour que la paie et les règles de fatigue facturent une couverture continue plutôt que des heures doubles chevauchées. Les systèmes de réservation d’installations et de laboratoires calculent l’occupation d’une salle ou d’un instrument lorsque les réservations s’empilent, alimentant des tableaux d’utilisation sans fonctions SQL de fenêtre à chaque rapport. Les pages de fiabilité et de statut transforment de nombreux intervalles d’incident partiels en une seule durée d’indisponibilité couverte pour le calcul mensuel de SLA.

Les suiveurs de temps de projet consolident des journaux de session en double issus de clients mobiles et de bureau qui ont enregistré le même travail deux fois avec des horloges légèrement différentes. Associez cet outil à l’intersection de deux intervalles lorsque vous avez besoin du chevauchement d’exactement deux plages, ou à des utilitaires d’humanisation de durée lorsque vous ne voulez qu’un texte lisible à partir d’un décompte de secondes.

Totaux de couverture d’astreinte et de vacation

Fusionne les fenêtres de service qui se chevauchent pour qu’une équipe de paie et de fatigue utilise les heures couvertes au lieu de compter deux fois les tours concurrents.

Occupation des salles et des ressources

Somme l’union des réservations d’un banc de laboratoire ou d’une salle de réunion lorsqu’elles se chevauchent, pour des rapports d’utilisation sans SQL brut.

Indisponibilité SLA issue d’incidents partiels

Regroupe de nombreux intervalles d’incident en une seule durée d’outage couverte pour le calcul mensuel de disponibilité et les exports de statut.

Les minutes qui se chevauchent sont-elles comptées deux fois ?

Non. Les intervalles sont triés et fusionnés avant la somme, de sorte que la couverture partagée ne contribue qu’une seule fois à la durée totale couverte.

Que se passe-t-il si deux intervalles se touchent seulement à une extrémité ?

Ils fusionnent en un segment continu. Les bornes qui se touchent ne créent pas d’écart et n’ajoutent pas de durée au-delà de la plage combinée.

Combien d'intervalles puis-je saisir ?

De un à 200 dans une même liste. Chacun doit avoir un début et une fin, le début précédant strictement la fin ; les intervalles de durée nulle ou inversés sont refusés.

Puis-je saisir des dates sans heure ?

Oui. Une date seule est lue comme minuit UTC, ce qui simplifie le travail à la journée. Les heures peuvent porter Z pour UTC ou un décalage numérique, et tout est converti en UTC avant la fusion.

Comment savoir quels intervalles ont été fusionnés ?

Le résultat liste chaque segment fusionné avec son début, sa fin et sa durée, et affiche le nombre d'intervalles saisis à côté du nombre restant après fusion, pour que vous puissiez contrôler le total.

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.

POSThttps://api.kit.forhosting.com/date/intervals-total-duration

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é.

curl -X POST https://api.kit.forhosting.com/date/intervals-total-duration \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"intervals":[{"start":"2020-01-01T10:00:00Z","end":"2020-01-01T12:00:00Z"},{"start":"2020-01-01T11:00:00Z","end":"2020-01-01T13:00:00Z"}]}'
{
  "intervals": [
    {
      "start": "2020-01-01T10:00:00Z",
      "end": "2020-01-01T12:00:00Z"
    },
    {
      "start": "2020-01-01T11:00:00Z",
      "end": "2020-01-01T13:00:00Z"
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "date.intervals_total_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.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Formes ISO invalides, plages inversées et listes vides échouent avec invalid_input et ne sont pas facturées.

Ce que signifie la durée couverte après fusion des chevauchements

La réponse indique input_count face à merged_count pour que vous voyiez la consolidation effectuée, et liste chaque segment fusionné avec son propre début, fin et durée pour l’audit. Utilisez total_duration_ms lorsque vous avez besoin d’une mesure entière principale ; utilisez total_duration_hours lorsque les tableaux de bord attendent des heures fractionnaires arrondies à douze décimales stables ; utilisez days, hours, minutes et seconds ensemble pour afficher une ligne lisible sans refaire la division.

Contrat d’entrée, bornes ISO et forme de la réponse

Envoyez un corps JSON avec un tableau intervals obligatoire d’un à deux cents objets. Après normalisation, start doit être strictement antérieur à end ; des bornes égales ou inversées échouent avec invalid_input en indiquant l’index de l’intervalle. En cas de succès, le corps inclut input_count, merged_count, total_duration_ms, total_duration_seconds, total_duration_hours, les champs de décomposition non négatifs days, hours, minutes, seconds et milliseconds, une chaîne formatée compacte telle que zéro d trois h zéro m zéro s, le tableau ordonné merged_intervals avec extrémités ISO UTC, et method égal à intervals_total_duration. Exemple : deux fenêtres horaires qui se chevauchent de dix à douze et de onze à treize UTC fusionnent en un segment de trois heures et total_duration_ms de dix millions huit cent mille. Conservez la liste sous le maximum publié pour que les Workers de bord respectent la mémoire tout en couvrant des lots réalistes.

Où une API de durée totale d’intervalles crée de la valeur

Comme l’implémentation est pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant. Épinglez merged_intervals et total_duration_ms dans les tests afin que les refactors ne changent pas en silence la sémantique de fusion au contact.

Comment calculer la durée totale d’intervalles de temps qui se chevauchent ?

Envoyez un JSON avec intervals comme tableau de {start, end} en ISO-8601. L’API fusionne les chevauchements en UTC et renvoie total_duration_ms, total_duration_seconds, total_duration_hours et merged_intervals.

Quelles erreurs d’entrée sont rejetées ?

Intervals vides ou absents, non-objets, chaînes ISO invalides, jours de calendrier impossibles et start non strictement antérieur à end échouent avec invalid_input et ne sont pas facturés.

Combien coûte l’outil de durée totale d’intervalles de temps ?

L’outil dans le navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.

Consulter la documentation complète du KIT →