os.time e os.date
Obtenha a hora atual.
os.time e os.date é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 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.
Por que time é importante
Os programas frequentemente precisam saber o time atual. Um jogo registra quando você marcou pontos, um arquivo de registro registra cada evento e um aplicativo de lembretes faz a contagem regressiva até um prazo.
Lua mantém suas ferramentas de time na biblioteca integrada os. As duas principais são os.time e os.date. Nesta lição, você conhecerá ambas.
os.time retorna um número
os.time() sem argumentos retorna o momento atual como um único número.
Esse número é a contagem de segundos desde um ponto fixo no passado, a época. É apenas um inteiro, então você pode armazená-lo, compará-lo ou fazer cálculos com ele.
local now = os.time()
print(now)
print(type(now))A época
Na maioria dos sistemas, a época é a meia-noite de 1º de janeiro de 1970, UTC. Portanto, os.time() informa quantos segundos se passaram desde então.
Um número grande como 1700000000 é normal. Ele aumenta em uma unidade a cada segundo, o que o torna perfeito para comparar dois momentos.
local seconds = os.time()
print("Seconds since 1970:", seconds)os.date retorna texto
Uma contagem bruta de segundos é difícil de ler. os.date() transforma time em texto fácil de entender.
Quando chamado sem argumentos, ele retorna uma cadeia de caracteres legível que descreve o date e o time atuais, usando as configurações locais do seu sistema.
print(os.date())os.date com um formato
Normalmente, você passa uma cadeia de caracteres de formato para os.date. Códigos especiais que começam com % são substituídos por partes do date.
%Y representa o ano com quatro dígitos, %m representa o mês e %d representa o dia. Os demais textos permanecem como estão.
print(os.date("Year: %Y"))
print(os.date("%Y-%m-%d"))Combinando time e date
os.date pode receber um segundo argumento: um número de time. Passe a ele o resultado de os.time para formatar aquele momento exato.
Sem o segundo argumento, ele usa o time atual; portanto, estas duas chamadas descrevem o mesmo instante.
local t = os.time()
print(os.date("%Y-%m-%d", t))Local versus UTC
Por padrão, os.date usa o fuso horário local. Para obter UTC, o time universal, comece a cadeia de caracteres de formato com um ponto de exclamação !.
Isso é importante para servidores e aplicativos usados no mundo todo, nos quais todos devem concordar com um único relógio.
print("Local:", os.date("%H:%M"))
print("UTC: ", os.date("!%H:%M"))A forma de tabela
Se você passar "*t" como formato, os.date retornará uma tabela em vez de uma cadeia de caracteres.
A tabela contém campos nomeados, como year, month, day, hour, min e sec. Isso é útil quando você precisa de apenas uma parte.
local d = os.date("*t")
print(d.year, d.month, d.day)
print(d.hour, d.min, d.sec)Lendo um campo
Como a forma de tabela fornece campos nomeados, é fácil obter apenas o mês ou apenas a hora atuais.
Use !*t para obter a versão UTC da tabela. Cada campo é um número simples que você pode usar em condições.
local d = os.date("*t")
if d.hour < 12 then
print("Good morning")
else
print("Good afternoon")
endos.time a partir de uma tabela
os.time também funciona no sentido inverso. Forneça uma tabela com year, month e day, e ele retornará a contagem de segundos correspondente a esse date.
Isso permite criar um valor de time para qualquer date específico do calendário que você escolher.
local t = os.time({year=2020, month=1, day=1, hour=0})
print(t)
print(os.date("%Y-%m-%d", t))Ida e volta
Você pode alternar livremente entre as duas formas: os.time transforma uma tabela em um número, e os.date("*t", n) transforma um número novamente em uma tabela.
Essa conversão de ida e volta é a base dos cálculos com date, que você explorará em lições posteriores.
local n = os.time({year=2021, month=6, day=15})
local back = os.date("*t", n)
print(back.year, back.month, back.day)Verificação rápida
Teste sua compreensão das duas funções principais.
Recapitulação
os.time() fornece o momento atual como um número de segundos desde a época. os.date() transforma time em texto usando códigos de formato % ou em uma tabela com "*t".
Adicione ! para obter UTC e passe um número de time como segundo argumento para formatar um instante específico. Juntas, essas funções atendem a quase todas as necessidades relacionadas a date em Lua.
Perguntas Frequentes
A aula “os.time e os.date” é grátis?
Sim — o texto completo de “os.time e os.date” é 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 “os.time e os.date”?
Obtenha a hora atual. 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 1 de 4.
Quanto tempo leva a aula “os.time e os.date”?
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
- os.time e os.date
- Formatando datas
- Aritmética de tempo
- Medindo durações