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.
Carga
Tabla global os. No se necesita require.
os.time()
os.date()
os.clock()
os.difftime()
Obtener Marcas de Tiempo
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]) -> integer
Parametros:
| Campo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
year |
integer | ano actual | Ano de cuatro digitos (ej., 2024) |
month |
integer | mes actual | Mes 1-12 |
day |
integer | dia actual | Dia del mes 1-31 |
hour |
integer | 0 | Hora 0-23 |
min |
integer | 0 | Minuto 0-59 |
sec |
integer | 0 | Segundo 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 Fechas
Formatear una marca de tiempo como string o devolver una tabla de fecha:
-- 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ámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format |
string | "%c" |
String de formato, "*t" para tabla |
timestamp |
integer | 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 (00-53) | 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", devuelve una tabla:
local t = os.date("*t")
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
year |
integer | Ano de cuatro digitos | 2024 |
month |
integer | Mes (1-12) | 6 |
day |
integer | Dia del mes (1-31) | 15 |
hour |
integer | Hora (0-23) | 14 |
min |
integer | Minuto (0-59) | 30 |
sec |
integer | Segundo (0-59) | 45 |
wday |
integer | Dia de semana (1-7, Domingo=1) | 7 |
yday |
integer | Dia del ano (1-366) | 167 |
isdst |
boolean | Horario de verano | false |
Use "!*t" para tabla de fecha UTC.
Medir Tiempo Transcurrido
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
Diferencia de Tiempo
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ámetro | Tipo | Descripción |
|---|---|---|
t2 |
integer | Marca de tiempo posterior |
t1 |
integer | Marca de tiempo anterior |
Devuelve t2 - t1 en segundos. Puede ser negativo si t1 > t2.
Constante de Plataforma
Constante que identifica el runtime:
os.platform -- "wippy"