19 / Entrada, salida y datos

Fecha y Hora

Nyx ofrece funciones de tiempo incorporadas para las necesidades más comunes: timestamps Unix en segundos, un reloj monotónico en milisegundos, una cadena formateada con la fecha y hora actual, y conversión de un valor epoch de vuelta a una fecha legible. No se necesita ningún import para estos primitivos.

19-datetime.nxFuente →
// 19: Date and time — timestamps, formatting, sleep
fn main() -> int {
    // Current Unix timestamp
    let now: int = time()
    print("Unix timestamp: " + int_to_string(now))

    // Millisecond precision
    let ms: int = time_ms()
    print("Milliseconds: " + int_to_string(ms))

    // Formatted datetime
    let dt: String = datetime_now()
    print("Current datetime: " + dt)

    // From epoch
    let formatted: String = datetime_from_epoch(now)
    print("From epoch: " + formatted)

    return 0
}
Salida ilustrativastdout
Unix timestamp: 1744761600
Milliseconds: 172479724
Current datetime: 2026-04-15 12:00:00
From epoch: 2026-04-15 12:00:00

Cómo funciona

time() devuelve el timestamp Unix actual como un int — el número de segundos desde el epoch Unix (1970-01-01 00:00:00 UTC). Esta es la forma estándar de registrar el momento de un evento, medir duraciones restando dos timestamps, o establecer tiempos de expiración para cachés y tokens.

time_ms() devuelve una marca de tiempo monotónica en milisegundos — otro reloj, no time() con más precisión: cuenta desde un origen arbitrario, así que sirve para medir duraciones y para generar IDs crecientes, y no sirve para fechas. datetime_now() devuelve la hora local formateada como una cadena legible en estilo ISO-8601.

datetime_from_epoch(ts) convierte cualquier timestamp Unix de vuelta al mismo formato legible. Esto resulta útil cuando guardas timestamps crudos en una base de datos o archivo de log y quieres mostrarlos más tarde. Para aritmética de fechas más avanzada — sumar días, parsear formatos arbitrarios o trabajar con zonas horarias — consulta std/datetime.