Ajouter des heures à une datetime
Décalez une date et heure d'un nombre d'heures et lisez le résultat en UTC : 10 h 00 UTC le 1er mars 2024 plus 5 heures donne 15 h 00 UTC le même jour. Les heures négatives et fractionnaires fonctionnent aussi. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Date et heure
- 2024-03-01T10:00:00Z
- Heures
- 5
- Résultat
- 2024-03-01T15:00:00Z
- Année
- 2 024
- Mois
- 3
- Jour
- 1
Cet outil accepte une datetime ISO-8601 explicite —heure complète avec Z ou décalage numérique, ou une date seule traitée comme minuit UTC— plus un décalage fini d’heures positif, négatif, fractionnaire ou nul. Il convertit la base en secondes d’époque UTC par une arithmétique grégorienne pure, ajoute round(hours × 3600) secondes entières et reconstruit un résultat UTC normalisé année-mois-jour T heure-minute-seconde Z. Les jours de calendrier impossibles et les chaînes mal formées échouent avec une erreur de validation claire au lieu de glisser au mois suivant.
Comment l’addition d’heures UTC fonctionne sans horloge système
Commencez par une datetime de base explicite écrite sous la forme internationale ISO afin que chaque client s’accorde sur la même année, le même mois, le même jour et les champs d’horloge optionnels. Lorsqu’une seule date de calendrier est fournie, traitez-la comme minuit en Temps universel coordonné. Lorsqu’une heure est présente, acceptez des secondes fractionnaires optionnelles (tronquées en secondes entières) et soit un Z final pour UTC, soit un décalage numérique heures-minutes signé soustrait lors de la conversion en temps absolu.
Validez que le jour civil existe sous les règles de bissextilité grégoriennes —le 29 février n’est légal que si l’année est divisible par quatre, sauf les siècles qui doivent aussi l’être par quatre cents— et que heure, minute et seconde restent dans leurs plages habituelles. Convertissez le triple civil en numéro de jour série avec l’algorithme days-from-civil de Howard Hinnant, multipliez par quatre-vingt-quatre mille six cents secondes, ajoutez l’heure locale du jour et soustrayez les minutes de décalage fois soixante pour obtenir les secondes d’époque UTC.
Ajoutez le décalage d’heures converti comme round(hours × 3600). Reconstruisez la date civile avec civil-from-days, extrayez heure, minute et seconde du résidu de secondes du jour, et formatez une chaîne quatre-deux-deux T deux-deux-deux Z.
Où les calculateurs d’ajout d’heures à une datetime apparaissent au travail
Les équipes d’exploitation convertissent l’heure de création d’un ticket support en échéances de première réponse en ajoutant des fenêtres contractuelles d’heures sans inventer une bibliothèque de calendrier complète. Les ingénieurs de données matérialisent des colonnes d’événements différés pour des pipelines qui se déclenchent N heures après un horodatage d’ingestion stocké en texte ISO. Les chefs de produit prototypent des fenêtres d’essai, des aperçus de TTL de cache et des textes d’expiration de session avec les mêmes nombres que le backend expédiera.
Si vous avez ensuite besoin d’ajouter des jours de calendrier sans horloge, d’agendas de jours ouvrables qui sautent les week-ends, de décomptes entre deux instants ou d’une conversion pure entre heures et minutes, traitez cela comme des intentions de recherche et des pages distinctes plutôt que de surcharger cette page d’ajout d’heures à une datetime — ces problèmes répondent à d’autres requêtes même si une partie de l’arithmétique se ressemble en dessous.
Cas d’usage
SLA et délais de réponse
Ajoutez des fenêtres contractuelles de réponse (par exemple quatre, huit ou vingt-quatre heures) à un horodatage ISO explicite de ticket et stockez une échéance UTC stable.
Colonnes de retard de pipeline
Matérialisez des horaires d’événements différés comme datetime ISO de base plus un décalage d’heures configuré pour jobs ETL, caches et relances planifiées.
Questions fréquentes
Que signifie ajouter des heures à une datetime ?
Cela signifie prendre un horodatage ISO-8601 explicite, le convertir en UTC à partir de la seule chaîne, avancer ou reculer d’un nombre fini d’heures et renvoyer la datetime UTC décalée.
Utilise-t-il le fuseau horaire local de mon ordinateur ?
Non. Toute la mathématique est en UTC dérivée uniquement de la chaîne d’entrée. Les décalages numériques de l’entrée s’appliquent une fois lors de la conversion en temps absolu ; le résultat est toujours émis avec un Z final.
Puis-je utiliser des heures fractionnaires ?
Oui. Des valeurs comme 1.5 deviennent round(1.5 × 3600) = 5400 secondes entières. Les valeurs non finies et les magnitudes absurdes sont rejetées.
Quels formats de datetime sont acceptés ?
Date seule YYYY-MM-DD (minuit UTC), ou datetime complète avec secondes et fraction optionnelles, se terminant par Z ou un décalage numérique ±HH:mm. Les formes libres sans largeurs de chiffres fixes sont rejetées.
Quel est le coût ?
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/add-hours \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2024-03-01T10:00:00Z","hours":5}'const res = await fetch("https://api.kit.forhosting.com/date/add-hours", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"datetime": "2024-03-01T10:00:00Z",
"hours": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/add-hours",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"datetime": "2024-03-01T10:00:00Z",
"hours": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/add-hours", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"datetime":"2024-03-01T10:00:00Z","hours":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"datetime":"2024-03-01T10:00:00Z","hours":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/add-hours", 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-03-01T10:00:00Z",
"hours": 5
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.add_hours",
"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. |
Notes techniques
Décaler un horodatage d’un nombre fixe d’heures est une tâche quotidienne dans les API, les planificateurs de tâches, les horloges de SLA et les imports de tableurs ; pourtant les fuseaux de l’hôte et l’heure d’été transforment une addition apparemment triviale en source de tests instables.
Ce que vous envoyez et ce que vous recevez
Contrôles classiques : ajouter cinq heures à dix heures UTC pour atteindre quinze heures le même jour, ajouter vingt-quatre heures pour franchir un jour de calendrier, soustraire trois heures d’un horodatage matinal, convertir une entrée à décalage plus-zéro-deux en résultat pur Z après le calcul, et rejeter une base comme le 29 février d’une année commune. Envoyez deux champs obligatoires : datetime comme chaîne ISO-8601, par exemple deux mille vingt-quatre tiret zéro trois tiret zéro un T dix deux-points zéro zéro deux-points zéro zéro Z, et hours comme nombre fini tel que cinq, zéro, moins trois ou un point cinq. Les alias date, dt, timestamp et ts sont acceptés pour la chaîne de base. Champs manquants, datetime non chaîne, chaînes hors forme ISO, décalages d’heures non finis, jours de calendrier impossibles et années de résultat hors plage échouent avec invalid_input et ne sont pas facturés. En cas de succès, la réponse renvoie la datetime de base tronquée, le décalage hours appliqué, la chaîne ISO UTC résultante après addition, l’année, le mois, le jour, l’heure, la minute et la seconde numériques du résultat, epoch_seconds du résultat, l’entier delta_seconds ajouté, hours_added et une courte formule documentant la reconstruction UTC. Le tarif des appels API réussis est la base publiée de $0.002 par élément ; les échecs de validation ne consomment pas le solde prépayé.
Où les calculateurs d’ajout d’heures à une datetime apparaissent au travail
Comme la capacité est un moteur parse pur, le tarif API est la base publiée de $0.002 par élément réussi et une validation échouée ne consomme pas le solde.
Cas d'intégration
Fixtures QA autour de minuit
Générez des horodatages attendus déterministes qui franchissent les limites de jour et de bissextile pour tests de régression sans dépendre de l’horloge hôte.