Saltar al contenido principal

Módulo Time

El módulo Time proporciona funciones y propiedades para trabajar con fecha y hora en JARU.

JARU Time Module

Uso

use Time

Funciones

now

La función now(format?) devuelve la fecha y hora actual del sistema.

Parámetros

ParámetroDescripción
format(Opcional) Cadena de formato según especificadores de strftime

Valor de retorno

Devuelve un string con la fecha y hora actual. Si no se especifica formato, devuelve la fecha en formato estándar (ej: "Tue Dec 23 16:30:45 2025").

Ejemplo sin formato

use Time

var ahora = Time.now()
println(ahora)
// Salida: Tue Dec 23 16:30:45 2025

Ejemplo con formato personalizado

use Time

// Formato: día/mes/año
var fecha = Time.now("%d/%m/%Y")
println(fecha)
// Salida: 23/12/2025

// Formato: hora:minutos:segundos
var hora = Time.now("%H:%M:%S")
println(hora)
// Salida: 16:30:45

// Formato ISO 8601
var iso = Time.now("%Y-%m-%d %H:%M:%S")
println(iso)
// Salida: 2025-12-23 16:30:45

Especificadores de formato

EspecificadorDescripciónEjemplo
%aNombre abreviado del día de la semanaThu
%ANombre completo del día de la semanaThursday
%bNombre abreviado del mesAug
%BNombre completo del mesAugust
%cRepresentación de fecha y horaThu Aug 23 14:55:02 2001
%dDía del mes con cero (01-31)23
%DFecha corta MM/DD/YY08/23/01
%eDía del mes con espacio (1-31)23
%FFecha corta YYYY-MM-DD2001-08-23
%HHora en formato 24h (00-23)14
%IHora en formato 12h (01-12)02
%jDía del año (001-366)235
%mMes como número (01-12)08
%MMinutos (00-59)55
%pDesignación AM o PMPM
%rHora en formato 12h02:55:02 pm
%RHora HH:MM en 24h14:55
%SSegundos (00-61)02
%THora ISO 8601 (HH:MM:SS)14:55:02
%uDía de la semana ISO 8601 (1-7, lunes=1)4
%wDía de la semana (0-6, domingo=0)4
%xRepresentación de fecha08/23/01
%XRepresentación de hora14:55:02
%yAño, últimos dos dígitos (00-99)01
%YAño completo2001
%zOffset ISO 8601 desde UTC+0100
%ZNombre de zona horariaCET
%%Carácter literal %%

Propiedades

El módulo Time expone propiedades que contienen los componentes de la fecha y hora en el momento de cargar el módulo.

Importante

Las propiedades day, month, year, hour, minute, second y weekday reflejan el momento en que se cargó el módulo con use Time. Para obtener valores actualizados en tiempo real, usa la función now() con el formato apropiado.

Propiedades de fecha

PropiedadTipoDescripción
dayintegerDía del mes (1-31)
weekdayintegerDía de la semana (0-6, donde 0 es domingo)
monthintegerMes (1-12)
yearintegerAño completo (ej: 2025)

Propiedades de hora

PropiedadTipoDescripción
hourintegerHora (0-23)
minuteintegerMinutos (0-59)
secondintegerSegundos (0-59)

Constantes

ConstanteValorDescripción
MINYEAR1Año mínimo soportado
MAXYEAR9999Año máximo soportado

Ejemplo de uso de propiedades

use Time

println("Fecha actual:")
println(" Día: ", Time.day)
println(" Mes: ", Time.month)
println(" Año: ", Time.year)

println("Hora actual:")
println(" Hora: ", Time.hour)
println(" Minutos: ", Time.minute)
println(" Segundos: ", Time.second)

println("Día de la semana: ", Time.weekday)
// 0=Domingo, 1=Lunes, ..., 6=Sábado

Ejemplos completos

Mostrar fecha y hora formateada

use Time

// Fecha en formato español
var fecha = Time.now("%d de %B de %Y")
println("Hoy es ", fecha)

// Hora actual
var hora = Time.now("%H:%M:%S")
println("Son las ", hora)

Crear un timestamp para logs

use Time

func log(mensaje)
var timestamp = Time.now("[%Y-%m-%d %H:%M:%S]")
println(timestamp, " ", mensaje)
end

log("Aplicación iniciada")
log("Procesando datos...")
log("Operación completada")

Determinar el día de la semana

use Time

var dias = ["Domingo", "Lunes", "Martes", "Miércoles",
"Jueves", "Viernes", "Sábado"]

var hoy = dias[Time.weekday]
println("Hoy es ", hoy)

if (Time.weekday == 0 or Time.weekday == 6) then
println("¡Es fin de semana!")
else
println("Es día laborable")
end

Formato personalizado para diferentes usos

use Time

// Para nombre de archivo
var nombreArchivo = "backup_" + Time.now("%Y%m%d_%H%M%S") + ".dat"
println("Archivo: ", nombreArchivo)
// Salida: backup_20251223_163045.dat

// Para mostrar al usuario
var fechaUsuario = Time.now("%A, %d de %B de %Y a las %H:%M")
println(fechaUsuario)
// Salida: Tuesday, 23 de December de 2025 a las 16:30

Plataformas soportadas

PlataformaSoporteNotas
Windows (SDL2)Usa funciones estándar de C
ESP32Requiere sincronización NTP para hora precisa
Emscripten (Web)Usa hora del navegador
SiFive🚧En desarrollo
Consejo para ESP32

En dispositivos ESP32, la hora del sistema puede no estar configurada al inicio. Considera usar un servidor NTP para sincronizar la hora antes de usar el módulo Time en aplicaciones que requieran precisión temporal.