Tiempo de OS

La tabla global os proporciona timestamps, formato de fechas, medición del tiempo transcurrido y cálculo de diferencias temporales. En un workflow, las lecturas del tiempo actual usan la referencia temporal del workflow; fuera de él usan el reloj del sistema.

Esta es una referencia de API. Los timestamps literales y las salidas formateadas son ilustrativos; los valores actuales dependen del reloj y la zona horaria del entorno de ejecución o del workflow.

Carga

La tabla os es global y no necesita cargarse con require.

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

Obtener Marcas de Tiempo

Lee un timestamp Unix en segundos desde el 1 de enero de 1970 UTC:

-- Current timestamp
local now = os.time()  -- 1718462445

-- Specific date/time
local t = os.time({
    year = 2024,
    month = 12,
    day = 25,
    hour = 10,
    min = 30,
    sec = 0
})

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

Parametros:

Campo Tipo Predeterminado Descripción
year number ano actual Ano de cuatro digitos (ej., 2024)
month number mes actual Mes 1-12
day number dia actual Dia del mes 1-31
hour number 0 Hora 0-23
min number 0 Minuto 0-59
sec number 0 Segundo 0-59

Sin argumentos, os.time() devuelve el timestamp 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.

-- Just date (time defaults to midnight)
os.time({year = 2024, month = 6, day = 15})

-- Partial (fills in current year/month)
os.time({day = 1})  -- first of current month

Formatear Fechas

Formatea un timestamp como string o devuelve sus campos de fecha en una tabla:

local now = os.time()

-- Default format os.date() -- "Sat Jun 15 14:30:45 2024"

-- Custom format 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"

-- UTC time (prefix format with !) os.date("!%Y-%m-%d %H:%M:%S", now) -- UTC instead of local

-- Date table local t = os.date("*t", now)

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

Parámetro Tipo Predeterminado Descripción
format string "%c" String de formato, "*t" para tabla
timestamp number tiempo actual Marca de tiempo Unix a formatear

Especificadores de Formato

Código Salida Ejemplo
%Y Ano de 4 digitos 2024
%y Ano de 2 digitos 24
%m Mes (01-12) 06
%d Dia (01-31) 15
%H Hora 24h (00-23) 14
%I Hora 12h (01-12) 02
%M Minuto (00-59) 30
%S Segundo (00-59) 45
%p AM/PM PM
%A Nombre de dia de semana Saturday
%a Dia de semana corto Sat
%B Nombre de mes June
%b Mes corto Jun
%w Dia de semana (0-6, Domingo=0) 6
%j Dia del ano (001-366) 167
%U Número de semana ISO 8601 (01-53, la semana empieza el lunes) 24
%W Número de semana ISO 8601 (01-53, la semana empieza el lunes) 24
%z Offset de zona horaria -0700
%Z Nombre de zona horaria PDT
%c Fecha/hora completa Sat Jun 15 14:30:45 2024
%x Solo fecha 06/15/24
%X Solo hora 14:30:45
%% Literal % %

Tabla de Fecha

Cuando el formato es "*t", os.date() devuelve una tabla:

local t = os.date("*t")
Campo Tipo Descripción Ejemplo
year number Ano de cuatro digitos 2024
month number Mes (1-12) 6
day number Dia del mes (1-31) 15
hour number Hora (0-23) 14
min number Minuto (0-59) 30
sec number Segundo (0-59) 45
wday number Dia de semana (1-7, Domingo=1) 7
yday number Dia del ano (1-366) 167
isdst boolean true cuando el offset UTC de la zona no es cero en esta versión; no es un indicador fiable de DST false

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

Medir Tiempo Transcurrido

Lee los segundos entre la referencia temporal actual del entorno de ejecución y el momento en que se inicializó el módulo de tiempo del sistema operativo:

local start = os.clock()

-- do work
for i = 1, 1000000 do end

local elapsed = os.clock() - start
print(string.format("Took %.3f seconds", elapsed))

Firma: os.clock() -> number

A diferencia de la definición de tiempo de CPU del Lua estándar, esta implementación se basa en tiempo transcurrido. En workflows usa la referencia temporal del workflow.

Diferencia de Tiempo

Calcula la diferencia entre dos timestamps 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ámetro Tipo Descripción
t2 number Marca de tiempo posterior
t1 number Marca de tiempo anterior

El resultado es t2 - t1 en segundos y es negativo cuando t1 > t2.

Constante de Plataforma

La constante os.platform identifica el entorno de ejecución:

os.platform  -- "wippy"