O que é e como calcular na prática
O assunto aqui é simples, mas vou tentar não ser preguiçoso e cobrir os detalhes que as pessoas costumam pular. A pergunta "2 horas atrás era que horas" pede uma subtração básica de horário, mas dependendo do contexto — fuso horário, horário de verão, virada de meia-noite — o resultado pode não ser tão óbvio assim.
2 horas atrás era que horas
Para resolver isso na mão, você pega o horário atual e subai 2 horas dele. Se agora são 15h, eram 13h. Se agora são 1h da manhã, eram 23h do dia anterior. O único truque é lidar com a virada quando o horário atual é menor que 2 horas. No meu dia a dia, ligo com isso quando trabalho com sistemas que registram eventos em logs e você precisa rastrear o que aconteceu num determinado período. Uma vez precisei investigar um erro num servidor e o log estava com carimbos de tempo que cruzavam a meia-noite em horário diferente do que eu esperava. O sistema rodava em UTC, mas eu estava olhando tudo pelo relógio da máquina local, que tava em Brasília. Eu fui subtrair 2 horas manualmente e o horário que saiu não batia com nada no relatório. A solução foi usar um script Python bem simples com datetime e pytz, passando o timestamp direto do log e convertendo ele explicitamente antes de fazer qualquer operação aritmética.
👉 Clique no botão abaixo para saber mais sobre o assunto!
O problema não era a conta em si. Era a suposição de que tudo estava no mesmo fuso. Quando você tem dados vindos de fontes diferentes — um serviço na AWS, um banco no Datadog, o log de uma API — cada um pode ter seu próprio horário base. Se você não normalizar tudo pra um fuso antes de calcular intervalo, a diferença que você extrai não vale nada. Eu comecei a padronizar tudo em UTC desde então e nunca mais tive esse problema. Se você quer fazer só a conta rápida, alguns sites e apps de calculadora de tempo resolvem na hora. O Google até responde direto se você digitar "que horas eram 2 horas atrás". Não tem erro ali. O problema é quando você precisa aplicar isso de forma programática ou em escala, e ai entra a parte chata.
A abordagem mais segura hoje é não confiar no relógio do computador para cálculos de intervalo. Usar bibliotecas de data e hora adequadas, nunca fazer substituição manual de string pra converter horário, e sempre especificar o fuso de forma explícita. Isso evita a maior parte dos erros que eu vejo as pessoas cometendo. Quem precisa de uma ferramenta prática, um gerador de timestamp ou um conversor de horário pra trás, dá pra montar rápido com as funções nativas do sistema operacional. No Linux, por exemplo, um date -d "2 hours ago" resolve na hora se o fuso estiver configurado direito. No Windows, o PowerShell também tem opções parecidas. A vantagem é que você não precisa instalar nada.
Tentar fazer isso sem uma biblioteca de data/hora é onde a maioria das pessoas erra. Fuso horário errado, horário de verão que mudou sem aviso, milissegundo que foi cortado na formatação. Tudo isso parece bobo até o problema aparecer num produção às 3 da manhã e você não conseguir explicar pra ninguém por que o intervalo tá errado. O cálculo em si demora uns segundos. A parte que leva tempo é garantir que os dados de entrada estão corretos e normalizados. Se você já passou por isso, sabe do que eu tô falando.