Horas de reunião sobrepostas entre fusos UTC
Berlim (UTC+2) e Nova York (UTC−5), ambas das 9 às 17, só coincidem das 14:00 às 15:00 UTC: 16:00 em Berlim e 9:00 em Nova York. Informe o fuso e o expediente de cada pessoa e veja todos os horários em comum. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Agendar uma chamada entre cidades é difícil quando cada pessoa só informa um offset UTC fixo e o dia de trabalho local. Um localizador que só converte um relógio em outro ainda deixa você achar a interseção à mão. Esta ferramenta de horas de reunião sobrepostas aceita dois ou mais participantes, cada um com um offset fixo em relação ao Tempo Universal Coordenado e uma janela local do mesmo dia —por exemplo das nove às dezessete—, mapeia cada janela em UTC com resolução de um minuto e devolve os intervalos em que todos estão disponíveis ao mesmo tempo. O resultado inclui o trecho em UTC e o início e o fim locais de cada participante para colar no convite de calendário sem aritmética mental.
O que significam horas de reunião sobrepostas com offsets UTC fixos
Um offset UTC fixo é um número constante de horas em relação ao Tempo Universal Coordenado: mais dois para um horário de inverno em grande parte da Europa Central, menos cinco para o horário padrão do Leste, mais cinco ponto cinco para o horário padrão da Índia, ou mais catorze para as Ilhas da Linha. Diferente de uma zona nomeada como America/New_York, um offset fixo não avança nem recua dentro desta calculadora.
O motor converte cada minuto local dessa janela em um minuto do dia UTC, permitindo que o intervalo mapeado atravesse a meia-noite UTC quando o offset é grande. A disponibilidade é armazenada como uma máscara circular de mil quatrocentos e quarenta minutos. A interseção é um AND bit a bit entre todos os participantes: um minuto UTC só é candidato a reunião se todas as máscaras o marcarem disponível.
Sequências contíguas de minutos candidatos tornam-se as janelas sobrepostas da resposta. Esse modelo atende à intenção de buscar horas de reunião sobrepostas entre fusos: não «que horas são aí», e sim «quando podemos falar enquanto todos ainda estão na jornada publicada». Transições de horário de verão e resolução de nomes de cidade ficam deliberadamente fora do escopo; informe os offsets fixos que já valem na data que importa, do mesmo modo que bilhetes e páginas de status imprimem rótulos UTC±.
Dicas práticas, limites e quando usar outra ferramenta
Prefira horas inteiras ou fracionárias que batam com offsets civis publicados: cinco ponto cinco para a Índia, cinco ponto sete cinco para o Nepal, nove ponto cinco para partes da Austrália, em vez de inventar um segundo campo de minutos de offset. Mantenha cada janela de trabalho em um único dia civil local com fim após o início; turnos noturnos que cruzam a meia-noite local não são modelados em uma linha —divida-os ou ajuste o dia planejado—.
Quando as jornadas da costa leste e oeste mal se tocam, espere uma janela curta perto da abertura ou do fechamento de um lado; quando Ásia e Américas usam ambas nove às cinco local, pode não haver sobreposição e você deve ampliar janelas ou escolher outro dia com outras restrições. Combine esta capacidade com um conversor de offset fixo se só precisa mapear um relógio, e com uma ferramenta IANA completa se só tem nomes de cidade ou deve honrar o horário de verão automaticamente.
Limite a equipe a quarenta participantes para manter o trabalho de máscaras de minutos limitado em workers de borda.
Casos de uso
Standups remotos de equipes entre continentes
Gestores de engenharia colam o offset UTC fixo e as horas núcleo de cada site para listar o único horário diário que serve a todos os escritórios antes do convite de calendário.
Chamadas comerciais com rótulos UTC± publicados
Equipes de contas que já conhecem ambos os lados como offsets fixos acham jornadas mútuas sem abrir uma base completa de fusos nem adivinhar o horário de verão.
Perguntas frequentes
O que acontece se não houver sobreposição?
Interseção vazia nunca volta como lista de sucesso vazia, e validação falha não é cobrada.
Isso trata horário de verão ou nomes de cidade?
Não. Não há base IANA nem uso de Date. Informe os offsets fixos que já valem na data que você está planejando.
Como informo a Índia ou o Nepal, que não usam horas inteiras?
Digite o fuso como hora decimal: 5,5 para o horário padrão da Índia e 5,75 para o Nepal. Partes da Austrália usam 9,5. Não é preciso informar os minutos à parte.
Dá para planejar um turno da noite que passa da meia-noite?
Não em uma única entrada. Cada expediente precisa começar e terminar no mesmo dia local, com o fim depois do início. Divida o turno noturno em duas entradas ou planeje outro dia.
Quantas pessoas ou cidades posso comparar de uma vez?
De duas até quarenta pessoas na mesma busca. Cada uma traz seu fuso e seu horário de trabalho, e um minuto só conta como livre quando todas estão disponíveis naquele momento.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"zones": [
{
"offset": 2,
"start_hour": 9,
"end_hour": 17,
"label": "Berlin"
},
{
"offset": -5,
"start_hour": 9,
"end_hour": 17,
"label": "New York"
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.time_zone_meeting_finder",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Quando as janelas não se encontram, a tarefa falha com invalid_input em vez de uma lista vazia enganosa, alinhada a tratar «sem horário nesse dia» como resultado rígido. O caminho é parse puro —sem base IANA, sem mudança de horário de verão, sem rede—, de modo que o executor gratuito do navegador e a API pré-paga coincidem byte a byte após arredondamento fixo.
O que significam horas de reunião sobrepostas com offsets UTC fixos
Cada participante também declara uma janela de trabalho no mesmo dia civil como start_hour e end_hour no relógio de vinte e quatro horas, com o fim estritamente maior que o início.
Contrato de entrada, formato da resposta e erros
Envie um corpo JSON com o campo obrigatório zones: um array de no mínimo dois e no máximo quarenta objetos. Cada objeto exige números finitos offset (de menos catorze a mais catorze inclusive), start_hour e end_hour (cada um de zero a vinte e quatro, com início estritamente menor que o fim e início menor que vinte e quatro). label é opcional: string curta para cidade, equipe ou pessoa. Os aliases participants, people, locations e team são aceitos para o array. Em sucesso o corpo inclui zone_count; zones ecoando cada linha com offset_label, relógios locais e duration_hours; has_overlap true; overlap_minutes e overlap_hours para o comprimento total intersectado; window_count; windows como lista ordenada de objetos com start_utc, end_utc, campos de duração e local_times que mapeiam a mesma sequência UTC no relógio local de cada participante; mais message e steps para exibição e depuração. Validação falha —zones ausente, menos de duas linhas, números não finitos, offsets fora de ±14, início não menor que o fim, rótulos vazios ou longos demais— devolve invalid_input e nunca é cobrada. O preço é um US$ 0,002 fixo por chamada bem-sucedida com unidade item.
Dicas práticas, limites e quando usar outra ferramenta
Use exemplos deliberados sem sobreposição em testes para a automação afirmar invalid_input em vez de inventar um horário. Checagens de ida e volta são diretas: recalcule à mão um par conhecido —Berlim UTC+2 das nove às dezessete contra Nova York UTC−5 das nove às dezessete produz uma janela UTC de uma hora das catorze às quinze, que é dezesseis às dezessete em Berlim e nove às dez em Nova York— e confirme que a API coincide. Tarefas falhas com invalid_input não consomem saldo pré-pago, o que mantém baratos scripts exploratórios quando se enviam de propósito janelas sem sobreposição.
Casos de integração
Testes de automação para agendadores multizona
Serviços que guardam offsets fixos geram janelas golden de sobreposição e casos deliberados de invalid_input sem sobreposição para integração contínua.
Perguntas técnicas
Como encontro horas de reunião sobrepostas entre fusos horários?
Envie pelo menos duas zonas, cada uma com offset UTC fixo e start_hour/end_hour locais. A API devolve janelas UTC e os horários locais de cada participante a cada minuto em que todos estão disponíveis.
Quantos participantes posso incluir?
Entre 2 e 40 linhas de zona por requisição. Cada linha precisa de offset, start_hour e end_hour; label é opcional.
Quanto custa o localizador de horas de reunião sobrepostas?
A ferramenta do navegador é gratuita. Pedidos API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.