Diferencia de horas entre desfases UTC
Esta calculadora obtiene la diferencia con signo, en horas, entre dos cadenas de desfase UTC fijo.
Ejecutar — gratis
Introduzca un primer desfase y un segundo; la herramienta resta el primero del segundo sin consultar relojes, ubicaciones, reglas de horario de verano ni bases de datos de zonas horarias. El resultado es positivo cuando el segundo desfase está adelantado, negativo cuando está atrasado y cero cuando ambos representan el mismo desplazamiento respecto de UTC. También devuelve la diferencia exacta en minutos para facilitar cálculos posteriores.
Comprenda la dirección del resultado con signo
El cálculo sigue un orden explícito: segundo desfase menos primer desfase. Si el desfase A es UTC+02:00 y el B es UTC+05:30, el resultado es +3.5 horas, porque B está tres horas y treinta minutos más al este de UTC que A. Si invierte las entradas, obtiene -3.5 horas. El signo resulta útil cuando un programa debe ajustar una hora de reloj desde el primer desfase hacia el segundo, aunque esta capacidad no recibe ni transforma fechas u horas: informa únicamente de la diferencia entre desfases. Un resultado cero indica que ambas cadenas describen el mismo desplazamiento UTC, incluso si una usa UTC y otra Z. La respuesta incluye las dos entradas normalizadas, un valor decimal en horas y un valor entero en minutos. Los minutos evitan ambigüedades con medias horas, cuartos de hora u otros componentes válidos, mientras que las horas ofrecen la respuesta directa que suele necesitarse.
Introduzca desfases UTC fijos con un formato preciso
Use UTC seguido de un signo, dos dígitos de hora, dos puntos y dos dígitos de minuto, por ejemplo UTC+05:30 o UTC-04:00. También puede omitir el prefijo UTC y enviar +05:30 o -04:00. Para cero se aceptan UTC y Z. Se ignoran los espacios alrededor de toda la cadena, pero se rechazan los espacios internos para no reinterpretar silenciosamente una entrada incorrecta. Las horas deben permanecer en el intervalo civil de desfases fijos, desde menos catorce hasta más catorce horas. En ambos límites de catorce horas, los minutos deben ser 00; en los demás casos deben estar entre 00 y 59. Exigir signo y dos puntos explícitos facilita la revisión e impide confundir +530 con +05:30. Los desfases devueltos se normalizan como UTC±HH:MM, de modo que las formas equivalentes producen una salida uniforme. Los valores no válidos generan un error de entrada que identifica el campo que debe corregirse.
Sepa qué pueden indicar los desfases fijos
Un desfase UTC fijo es un desplazamiento numérico, no una zona horaria geográfica. La diferencia importa porque un lugar puede cambiar de desfase por el horario de verano, decisiones gubernamentales o reglas históricas. Una ciudad, por ejemplo, puede emplear un desfase en invierno y otro en verano, mientras que una cadena de desfase no contiene ubicación ni fecha para elegir la regla aplicable. Por ello, esta capacidad no consulta zonas horarias ni afirma cuál es la hora local actual de un lugar. Ese alcance limitado hace que la respuesta sea determinista: las mismas cadenas siempre producen la misma salida, sin importar cuándo ni dónde se ejecute la solicitud. Úsela para validar configuraciones, comparar desfases elegidos por otro sistema, preparar operaciones de calendario cuando ya conoce los desfases o probar integraciones que intercambian valores numéricos. Si parte de zonas con nombre como Europe/London o America/New_York, resuélvalas primero para el instante correspondiente y pase aquí los desfases fijos resultantes.
Qué puede hacer con ella
Comparar desfases de servicios configurados
Confirme la diferencia horaria con signo entre dos sistemas cuyos desfases UTC fijos ya conoce.
Comprobar operaciones de horarios
Obtenga el ajuste necesario para trasladar una hora de reloj desde el primer desfase hacia el segundo.
Probar integraciones de desfases
Use desfases normalizados y minutos exactos como datos estables para API, formularios y canalizaciones.
Preguntas frecuentes
¿Cómo se determina el signo?
La calculadora resta offset_a de offset_b. Un resultado positivo indica que el segundo está adelantado; uno negativo, que está atrasado.
¿Tiene en cuenta el horario de verano?
No. Solo compara desfases numéricos fijos y no utiliza fechas, ubicaciones ni reglas de zonas horarias.
¿Qué formatos de entrada se aceptan?
Use UTC±HH:MM o ±HH:MM. También se aceptan UTC y Z para un desfase cero.
¿Admite desfases de media hora y cuarto de hora?
Sí. Admite cualquier componente de minutos válido entre 00 y 59 dentro del intervalo total de ±14:00.
¿Por qué se devuelve difference_minutes?
Los minutos enteros conservan el cálculo exacto y facilitan operaciones posteriores cuando la diferencia en horas es fraccionaria.
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002; la versión del navegador puede ejecutarse localmente sin consultar servicios externos.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/date/offset-difference-hours \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"offset_a":"UTC+05:30","offset_b":"UTC-04:00"}'const res = await fetch("https://api.kit.forhosting.com/date/offset-difference-hours", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"offset_a": "UTC+05:30",
"offset_b": "UTC-04:00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/offset-difference-hours",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"offset_a": "UTC+05:30",
"offset_b": "UTC-04:00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/offset-difference-hours", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"offset_a":"UTC+05:30","offset_b":"UTC-04:00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"offset_a":"UTC+05:30","offset_b":"UTC-04:00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/offset-difference-hours", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"offset_a": "UTC+05:30",
"offset_b": "UTC-04:00"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.offset_difference_hours",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |