Horas de reunión solapadas entre husos UTC
Berlín (UTC+2) y Nueva York (UTC−5), ambas de 9 a 17, solo coinciden de 14:00 a 15:00 UTC: las 16:00 en Berlín y las 9:00 en Nueva York. Añada el desfase y el horario de cada persona y vea las franjas comunes. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Coordinar una llamada entre ciudades es difícil cuando cada persona solo indica un desface UTC fijo y su jornada local. Un buscador que solo convierte un reloj en otro aún le obliga a hallar la intersección a mano. Esta herramienta de horas de reunión solapadas acepta dos o más participantes, cada uno con un desface fijo respecto al Tiempo Universal Coordinado y una ventana local del mismo día —por ejemplo de nueve a diecisiete—, proyecta cada ventana a UTC con resolución de un minuto y devuelve los intervalos en los que todos están disponibles a la vez. El resultado incluye el tramo en UTC y la hora de inicio y fin local de cada participante para que pueda copiarlas a una invitación de calendario sin aritmética mental.
Qué significan las horas de reunión solapadas con desfaces UTC fijos
Un desface UTC fijo es un número constante de horas respecto al Tiempo Universal Coordinado: más dos para un horario de invierno en gran parte de Europa Central, menos cinco para la hora estándar del Este, más cinco coma cinco para la hora estándar de la India, o más catorce para las islas de la Línea. A diferencia de una zona con nombre como America/New_York, un desface fijo no avanza ni retrocede dentro de esta calculadora.
El motor convierte cada minuto local de esa ventana en un minuto del día UTC, permitiendo que el intervalo mapeado cruce la medianoche UTC cuando el desface es grande. La disponibilidad se guarda como una máscara circular de mil cuatrocientos cuarenta minutos. La intersección es un AND bit a bit entre todos los participantes: un minuto UTC es candidato de reunión solo si todas las máscaras lo marcan disponible.
Las rachas contiguas de minutos candidatos se convierten en las ventanas solapadas de la respuesta. Ese modelo responde a la intención de buscar horas de reunión solapadas entre zonas: no «qué hora es allí», sino «cuándo podemos hablar mientras todos siguen en su jornada publicada». Las transiciones de horario de verano y la resolución de nombres de ciudad quedan deliberadamente fuera de alcance; aporte los desfaces fijos que ya aplican a la fecha que le importa, del mismo modo que billetes y páginas de estado imprimen etiquetas UTC±.
Consejos prácticos, límites y cuándo usar otra herramienta
Prefiera horas enteras o fraccionarias que coincidan con desfaces civiles publicados: cinco coma cinco para la India, cinco coma siete cinco para Nepal, nueve coma cinco para partes de Australia, en lugar de inventar un segundo campo de minutos de desface. Mantenga cada ventana laboral en un solo día civil local con fin posterior al inicio; los turnos nocturnos que cruzan la medianoche local no se modelan en una sola fila —divídalos o ajuste el día que planifica—.
Cuando las jornadas de costa este y oeste apenas se tocan, espere una ventana corta cerca de la apertura o el cierre de un lado; cuando Asia y las Américas usan ambas nueve a cinco local, puede no haber solapamiento y deberá ampliar ventanas o elegir otro día con otras restricciones. Combine esta capacidad con un convertidor de desface fijo si solo necesita mapear un reloj, y con una herramienta IANA completa si solo tiene nombres de ciudad o debe respetar el horario de verano automáticamente.
Limite el equipo a cuarenta participantes para acotar el trabajo de máscaras de minutos en workers de borde.
Qué puede hacer con ella
Standups remotos de equipos entre continentes
Los responsables de ingeniería pegan el desface UTC fijo y las horas núcleo de cada sede para listar el único hueco diario válido para todas las oficinas antes de enviar la invitación de calendario.
Llamadas comerciales con etiquetas UTC± publicadas
Los equipos de cuentas que ya conocen ambos lados como desfaces fijos hallan jornadas mutuas sin abrir una base de husos completa ni adivinar el horario de verano.
Preguntas frecuentes
¿Qué ocurre si no hay solapamiento?
La intersección vacía nunca se devuelve como lista de éxito vacía, y la validación fallida no se factura.
¿Gestiona el horario de verano o nombres de ciudad?
No. No hay base IANA ni uso de Date. Aporte los desfaces fijos que ya aplican a la fecha que planifica.
¿Cómo indico la India o Nepal, que no van en horas enteras?
Escriba el desfase como hora decimal: 5,5 para la hora estándar de la India y 5,75 para Nepal. Algunas zonas de Australia usan 9,5. No hace falta indicar los minutos aparte.
¿Puedo planificar un turno de noche que pasa de medianoche?
No en una sola entrada. Cada jornada debe empezar y terminar el mismo día local, con el final después del inicio. Divida el turno nocturno en dos entradas o planifique otro día.
¿Cuántas personas o ciudades puedo comparar a la vez?
Desde dos hasta cuarenta participantes en una misma búsqueda. Cada uno aporta su desfase y su horario, y un minuto solo cuenta como libre cuando todos están disponibles en ese momento.
Herramientas relacionadas
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/travel/time-zone-meeting-finder \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"zones":[{"offset":2,"start_hour":9,"end_hour":17,"label":"Berlin"},{"offset":-5,"start_hour":9,"end_hour":17,"label":"New York"}]}'const res = await fetch("https://api.kit.forhosting.com/travel/time-zone-meeting-finder", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"zones": [
{
"offset": 2,
"start_hour": 9,
"end_hour": 17,
"label": "Berlin"
},
{
"offset": -5,
"start_hour": 9,
"end_hour": 17,
"label": "New York"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/time-zone-meeting-finder",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"zones": [
{
"offset": 2,
"start_hour": 9,
"end_hour": 17,
"label": "Berlin"
},
{
"offset": -5,
"start_hour": 9,
"end_hour": 17,
"label": "New York"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/time-zone-meeting-finder", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"zones":[{"offset":2,"start_hour":9,"end_hour":17,"label":"Berlin"},{"offset":-5,"start_hour":9,"end_hour":17,"label":"New York"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"zones":[{"offset":2,"start_hour":9,"end_hour":17,"label":"Berlin"},{"offset":-5,"start_hour":9,"end_hour":17,"label":"New York"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/time-zone-meeting-finder", 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
{
"zones": [
{
"offset": 2,
"start_hour": 9,
"end_hour": 17,
"label": "Berlin"
},
{
"offset": -5,
"start_hour": 9,
"end_hour": 17,
"label": "New York"
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.time_zone_meeting_finder",
"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. |
Notas técnicas
Cuando las ventanas no coinciden, la tarea falla con invalid_input en lugar de una lista vacía engañosa, coherente con tratar «no hay hueco ese día» como un resultado duro. La ruta es parse puro —sin base IANA, sin cambios de horario de verano, sin red—, de modo que el ejecutor gratuito del navegador y la API prepago coinciden byte a byte tras un redondeo fijo.
Qué significan las horas de reunión solapadas con desfaces UTC fijos
Cada participante declara además una ventana laboral del mismo día civil como start_hour y end_hour en reloj de veinticuatro horas, con el fin estrictamente mayor que el inicio.
Contrato de entrada, forma de la respuesta y errores
La regla de producto para intersección vacía es la misma ruta: cuando las máscaras no comparten ningún minuto, el manejador lanza un mensaje claro de no solapamiento para que los clientes no traten el silencio como éxito. Envíe un cuerpo JSON con el campo obligatorio zones: un arreglo de al menos dos y como máximo cuarenta objetos. Cada objeto exige números finitos offset (entre menos catorce y más catorce inclusive), start_hour y end_hour (cada uno de cero a veinticuatro, con inicio estrictamente menor que fin e inicio menor que veinticuatro). label es opcional: una cadena corta para la ciudad, el equipo o la persona. Se aceptan los alias participants, people, locations y team para el arreglo. En caso de éxito el cuerpo incluye zone_count; zones repitiendo cada fila con offset_label, relojes locales y duration_hours; has_overlap en true; overlap_minutes y overlap_hours para la longitud total intersectada; window_count; windows como lista ordenada de objetos con start_utc, end_utc, campos de duración y local_times que proyectan la misma racha UTC al reloj local de cada participante; más message y steps para mostrar y depurar. La validación fallida —zones ausentes, menos de dos filas, números no finitos, desfaces fuera de ±14, inicio no menor que fin, etiquetas vacías o demasiado largas— devuelve invalid_input y nunca se factura. El precio es un $0.002 fijo por llamada correcta con unidad item.
Consejos prácticos, límites y cuándo usar otra herramienta
Use ejemplos deliberados sin solapamiento en pruebas para que la automatización afirme invalid_input en lugar de inventar un hueco. Las comprobaciones de ida y vuelta son directas: recalcule a mano un par conocido —Berlín UTC+2 de nueve a diecisiete frente a Nueva York UTC−5 de nueve a diecisiete da una ventana UTC de una hora de catorce a quince, que es dieciséis a diecisiete en Berlín y nueve a diez en Nueva York— y confirme que la API coincide. Las tareas fallidas con invalid_input no consumen saldo prepago, lo que mantiene baratos los scripts de exploración cuando se envían a propósito ventanas no solapadas.
Casos de integración
Pruebas de automatización para planificadores multizona
Los servicios que guardan desfaces fijos generan ventanas doradas de solapamiento y casos deliberados de invalid_input sin solapamiento para la integración continua.
Preguntas técnicas
¿Cómo encuentro horas de reunión solapadas entre zonas horarias?
Envíe al menos dos zonas, cada una con un desface UTC fijo y start_hour/end_hour locales. La API devuelve ventanas UTC y la hora local de cada participante en cada minuto en que todos están disponibles.
¿Cuántos participantes puedo incluir?
Entre 2 y 40 filas de zona por petición. Cada fila necesita offset, start_hour y end_hour; label es opcional.
¿Cuánto cuesta el buscador de horas de reunión solapadas?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT prepago a $0.002 por llamada correcta; la entrada inválida no se factura.