Pular para o conteúdo

OS Time

Funções de tempo padrão Lua os. Fornece tempo de relogio de parede real para timestamps, formatação de datas e calculos de tempo.

Tabela global os. Nenhum require necessario.

os.time()
os.date()
os.clock()
os.difftime()

Obter timestamp Unix (segundos desde 1 de Jan, 1970 UTC):

-- Timestamp atual
local now = os.time() -- 1718462445
-- Data/hora específica
local t = os.time({
year = 2024,
month = 12,
day = 25,
hour = 10,
min = 30,
sec = 0
})

Assinatura: os.time([spec]) -> number

Parametros:

CampoTipoPadrãoDescrição
yearnumberano atualAno de 4 digitos (ex: 2024)
monthnumbermes atualMes 1-12
daynumberdia atualDia do mes 1-31
hournumber0Hora 0-23
minnumber0Minuto 0-59
secnumber0Segundo 0-59

Quando chamado sem argumentos, retorna timestamp Unix atual.

Quando chamado com uma tabela, qualquer campo ausente usa os padroes mostrados acima. Os campos year, month e day usam a data atual se não específicados.

-- Apenas data (hora padrão e meia-noite)
os.time({year = 2024, month = 6, day = 15})
-- Parcial (preenche ano/mes atual)
os.time({day = 1}) -- primeiro do mes atual

Formatar um timestamp como string ou retornar uma tabela de data:

local now = os.time()

— Formato padrão os.date() — “Sat Jun 15 14:30:45 2024”

— Formato customizado os.date(“%Y-%m-%d”, now) — “2024-06-15” os.date(“%H:%M:%S”, now) — “14:30:45” os.date(“%Y-%m-%dT%H:%M:%S”, now) — “2024-06-15T14:30:45”

— Hora UTC (prefixar formato com !) os.date(”!%Y-%m-%d %H:%M:%S”, now) — UTC ao inves de local

— Tabela de data local t = os.date(“*t”, now)

Assinatura: os.date([format], [timestamp]) -> string | table

ParâmetroTipoPadrãoDescrição
formatstring"%c"String de formato, "*t" para tabela
timestampnumberhora atualTimestamp Unix para formatar
CódigoSaidaExemplo
%YAno 4 digitos2024
%yAno 2 digitos24
%mMes (01-12)06
%dDia (01-31)15
%HHora 24h (00-23)14
%IHora 12h (01-12)02
%MMinuto (00-59)30
%SSegundo (00-59)45
%pAM/PMPM
%ANome do diaSaturday
%aDia abreviadoSat
%BNome do mesJune
%bMes abreviadoJun
%wDia da semana (0-6, Domingo=0)6
%jDia do ano (001-366)167
%UNumero da semana (00-53)24
%zOffset de fuso horario-0700
%ZNome do fuso horarioPDT
%cData/hora completaSat Jun 15 14:30:45 2024
%xApenas data06/15/24
%XApenas hora14:30:45
%%% literal%

Quando formato e "*t", retorna uma tabela:

local t = os.date("*t")
CampoTipoDescriçãoExemplo
yearnumberAno 4 digitos2024
monthnumberMes (1-12)6
daynumberDia do mes (1-31)15
hournumberHora (0-23)14
minnumberMinuto (0-59)30
secnumberSegundo (0-59)45
wdaynumberDia da semana (1-7, Domingo=1)7
ydaynumberDia do ano (1-366)167
isdstbooleanHorario de veraofalse

Use "!*t" para tabela de data UTC.

Obter segundos decorridos desde o inicio do runtime Lua:

local start = os.clock()
-- fazer trabalho
for i = 1, 1000000 do end
local elapsed = os.clock() - start
print(string.format("Levou %.3f segundos", elapsed))

Assinatura: os.clock() -> number

Obter diferenca entre dois timestamps em segundos:

local t1 = os.time({year = 2024, month = 1, day = 1})
local t2 = os.time({year = 2024, month = 12, day = 31})
local diff = os.difftime(t2, t1) -- t2 - t1
local days = diff / 86400
print(days) -- 365

Assinatura: os.difftime(t2, t1) -> number

ParâmetroTipoDescrição
t2numberTimestamp posterior
t1numberTimestamp anterior

Retorna t2 - t1 em segundos. Pode ser negativo se t1 > t2.

Constante identificando o runtime:

os.platform -- "wippy"