0Pricing
Lua Academy · Aula

Aritmética de tempo

Some e compare horários.

Aritmética de tempo é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.

time são apenas números

Como os.time retorna apenas segundos, fazer cálculos com date consiste principalmente em aritmética comum. Adicione segundos para avançar e subtraia para voltar.

Esta lição mostra como deslocar times, compará-los e encontrar a lacuna entre dois momentos.

Segundos em um minuto, uma hora e um dia

Para trabalhar com unidades maiores, lembre-se das contagens básicas: 60 segundos em um minuto, 3600 em uma hora e 86400 em um dia.

Multiplicar por essas constantes permite expressar qualquer duração em segundos.

print("Minute:", 60)
print("Hour:", 60 * 60)
print("Day:", 24 * 60 * 60)

Uma hora depois

Para obter o time uma hora à frente do atual, use os.time() e adicione 3600 segundos.

Passe o novo número para os.date para ver o resultado como texto legível.

local now = os.time()
local later = now + 3600
print(os.date("%H:%M", now))
print(os.date("%H:%M", later))

Ontem e amanhã

Adicione 86400 segundos para avançar um dia ou subtraia esse valor para voltar um dia.

Essa é uma forma rápida de calcular o date de amanhã ou de ontem sem se preocupar com os limites dos meses.

local now = os.time()
print("Yesterday:", os.date("%Y-%m-%d", now - 86400))
print("Tomorrow: ", os.date("%Y-%m-%d", now + 86400))

Construindo um date específico

Comece a aritmética a partir de um date fixo construindo-o com uma tabela. Aqui, criamos o primeiro dia de 2025 e depois adicionamos uma semana.

O time adicionado avança corretamente para 8 de janeiro.

local start = os.time({year=2025, month=1, day=1})
local week = start + 7 * 86400
print(os.date("%Y-%m-%d", week))

Comparando dois times

Como os times são números, os operadores de comparação comuns funcionam. Um número maior representa um momento posterior.

Isso facilita verificar se um prazo já passou.

local deadline = os.time({year=2020, month=1, day=1})
local now = os.time()
if now > deadline then
  print("Deadline has passed")
end

Diferença em segundos

Subtrair um time de outro fornece a diferença em segundos. Lua também oferece os.difftime(a, b), que retorna a - b como um número.

Usar os.difftime é a forma portável e recomendada de encontrar um intervalo.

local a = os.time({year=2025, month=1, day=2})
local b = os.time({year=2025, month=1, day=1})
print(os.difftime(a, b))

Convertendo segundos em dias

Um intervalo bruto em segundos é grande, portanto divida-o para chegar a unidades mais fáceis de usar. Divida por 86400 para obter dias ou por 3600 para obter horas.

Use math.floor para remover a parte fracionária quando quiser apenas unidades inteiras.

local diff = os.difftime(
  os.time({year=2025, month=1, day=11}),
  os.time({year=2025, month=1, day=1}))
print(diff / 86400, "days")

Dias até um evento

Combine as ideias para fazer uma contagem regressiva até uma data futura. Subtraia o momento atual do alvo e depois converta os segundos em dias inteiros.

Esse padrão é usado em cronômetros de contagem regressiva e aplicativos de lembretes.

local target = os.time({year=2030, month=1, day=1})
local secs = os.difftime(target, os.time())
local days = math.floor(secs / 86400)
print("Days left:", days)

Normalização com os.time

Um truque interessante: forneça a os.time uma tabela com um campo fora do intervalo, e ela o corrige. O dia 32 de janeiro se torna 1º de fevereiro.

Isso permite adicionar dias simplesmente aumentando o campo day, e Lua resolve o calendário.

local t = os.time({year=2025, month=1, day=32})
print(os.date("%Y-%m-%d", t))

Adicione um mês com segurança

Graças à normalização, você pode aumentar o campo month para além de 12, e Lua avança o ano.

O mês 13 de 2025 se torna janeiro de 2026 automaticamente.

local t = os.time({year=2025, month=13, day=1})
print(os.date("%Y-%m-%d", t))

Verificação rápida

Aplique seus conhecimentos de cálculos com tempo.

Recapitulação

Os valores de tempo são números, portanto adicione ou subtraia segundos para deslocá-los: 3600 por hora e 86400 por dia. Compare os tempos diretamente com > e <.

Use os.difftime para obter o intervalo entre dois tempos e depois divida para obter horas ou dias. Lembre-se também de que os.time normaliza campos de tabela fora do intervalo, simplificando os cálculos de calendário.

Perguntas Frequentes

A aula “Aritmética de tempo” é grátis?

Sim — o texto completo de “Aritmética de tempo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.

O que vou aprender em “Aritmética de tempo”?

Some e compare horários. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Lua Academy?

Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Aritmética de tempo”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Lua Academy?

Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. os.time e os.date
  2. Formatando datas
  3. Aritmética de tempo
  4. Medindo durações
← Voltar para Lua Academy