Ir al contenido

Tiempo de OS

Funciones de tiempo os estandar de Lua. Proporciona tiempo de reloj de pared real para marcas de tiempo, formato de fechas y calculos de tiempo.

Tabla global os. No se necesita require.

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

Obtener marca de tiempo Unix (segundos desde 1 de Enero, 1970 UTC):

-- Marca de tiempo actual
local now = os.time() -- 1718462445
-- Fecha/hora especifica
local t = os.time({
year = 2024,
month = 12,
day = 25,
hour = 10,
min = 30,
sec = 0
})

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

Parametros:

CampoTipoPredeterminadoDescripción
yearnumberano actualAno de cuatro digitos (ej., 2024)
monthnumbermes actualMes 1-12
daynumberdia actualDia del mes 1-31
hournumber0Hora 0-23
minnumber0Minuto 0-59
secnumber0Segundo 0-59

Cuando se llama sin argumentos, devuelve la marca de tiempo Unix actual.

Cuando se llama con una tabla, cualquier campo faltante usa los valores predeterminados mostrados arriba. Los campos year, month y day usan la fecha actual si no se especifican.

-- Solo fecha (hora predeterminada a medianoche)
os.time({year = 2024, month = 6, day = 15})
-- Parcial (rellena ano/mes actual)
os.time({day = 1}) -- primero del mes actual

Formatear una marca de tiempo como string o devolver una tabla de fecha:

local now = os.time()

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

— Formato personalizado 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 (prefijo de formato con !) os.date(”!%Y-%m-%d %H:%M:%S”, now) — UTC en lugar de local

— Tabla de fecha local t = os.date(“*t”, now)

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

ParámetroTipoPredeterminadoDescripción
formatstring"%c"String de formato, "*t" para tabla
timestampnumbertiempo actualMarca de tiempo Unix a formatear
CódigoSalidaEjemplo
%YAno de 4 digitos2024
%yAno de 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
%ANombre de dia de semanaSaturday
%aDia de semana cortoSat
%BNombre de mesJune
%bMes cortoJun
%wDia de semana (0-6, Domingo=0)6
%jDia del ano (001-366)167
%UNúmero de semana (00-53)24
%zOffset de zona horaria-0700
%ZNombre de zona horariaPDT
%cFecha/hora completaSat Jun 15 14:30:45 2024
%xSolo fecha06/15/24
%XSolo hora14:30:45
%%Literal %%

Cuando el formato es "*t", devuelve una tabla:

local t = os.date("*t")
CampoTipoDescripciónEjemplo
yearnumberAno de cuatro digitos2024
monthnumberMes (1-12)6
daynumberDia del mes (1-31)15
hournumberHora (0-23)14
minnumberMinuto (0-59)30
secnumberSegundo (0-59)45
wdaynumberDia de semana (1-7, Domingo=1)7
ydaynumberDia del ano (1-366)167
isdstbooleanHorario de veranofalse

Use "!*t" para tabla de fecha UTC.

Obtener segundos transcurridos desde que inicio el runtime de Lua:

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

Firma: os.clock() -> number

Obtener diferencia entre dos marcas de tiempo en 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

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

ParámetroTipoDescripción
t2numberMarca de tiempo posterior
t1numberMarca de tiempo anterior

Devuelve t2 - t1 en segundos. Puede ser negativo si t1 > t2.

Constante que identifica el runtime:

os.platform -- "wippy"