Data e Hora (std::datetime)
Nesta página
std::datetime fornece acesso ao instante atual do sistema, conversão entre
timestamps Unix e representações de calendário, formatação e análise de strings
de data, e aritmética simples de dias e horas.
Todos os exemplos abaixo requerem o host e não podem ser executados no sandbox WASM do navegador; rode-os com a CLI do Zolo.
Instante atual
datetime.now() retorna um objeto com os campos year, month, day,
hour, minute, second, millisecond e timestamp (segundos Unix como
float). O módulo também oferece predicados de calendário:
Lê os campos do instante atual e demonstra is_leap_year / days_in_month.
// Feature: datetime.now — current instant
// When to use: timestamps for logs, time measurement, metadata.
use std::datetime
let now = datetime.now()
// Expected fields:
// year, month, day, hour, minute, second, millisecond, timestamp.
print(now.year >= 2024) // expected: true
print(now.month >= 1 && now.month <= 12) // expected: true
print(now.day >= 1 && now.day <= 31) // expected: true
print(now.hour >= 0 && now.hour <= 23) // expected: true
print(now.timestamp > 0.0) // expected: true
// Useful: extract just the year for a log header.
print("current year: {now.year}")
// is_leap_year — predicate.
print(datetime.is_leap_year(2024)) // expected: true
print(datetime.is_leap_year(2023)) // expected: false
// days_in_month.
print(datetime.days_in_month(2024, 2)) // expected: 29
print(datetime.days_in_month(2023, 2)) // expected: 28
print(datetime.days_in_month(2024, 7)) // expected: 31
Requer a CLI/host do Zolo — abra no playground ou rode localmente.
Formatação
datetime.to_iso produz uma string ISO-8601 UTC; datetime.format aceita
códigos %Y %m %d %H %M %S para saídas personalizadas. Use
datetime.from_timestamp(seconds) para criar um objeto a partir de um
timestamp estático e obter resultados determinísticos:
Converte o epoch Unix em strings legíveis com to_iso e format.
// Feature: datetime.format / datetime.to_iso — formatting dates
// When to use: produce human-readable or serializable strings (ISO-8601).
use std::datetime
// from_timestamp gives a stable, deterministic value.
// 0 = 1970-01-01T00:00:00Z (epoch).
let epoch = datetime.from_timestamp(0)
// to_iso — produces an ISO-8601 UTC string.
let iso = datetime.to_iso(epoch)
print(iso.starts_with("1970-01-01")) // expected: true
// format — uses codes: %Y (year), %m (month), %d (day),
// %H (hour), %M (min), %S (sec).
print(datetime.format(epoch, "%Y-%m-%d")) // expected: 1970-01-01
print(datetime.format(epoch, "%H:%M:%S")) // expected: 00:00:00
// to_iso also accepts a numeric timestamp directly.
print(datetime.to_iso(0).starts_with("1970")) // expected: true
Requer a CLI/host do Zolo — abra no playground ou rode localmente.
Análise e aritmética
datetime.parse detecta o formato automaticamente; datetime.from_timestamp
converte um número de segundos. add_days e add_hours operam sobre
timestamps (retornam um novo timestamp Int) — re-envolva com from_timestamp
para ler os campos de calendário:
Analisa "2024-06-15", avança 3 dias e 5 horas com aritmética de timestamp.
// Feature: datetime.parse / datetime.from_timestamp — input
// When to use: read dates coming from logs, configs, APIs.
use std::datetime
// from_timestamp — takes seconds since epoch.
let dt = datetime.from_timestamp(1700000000)
print(dt.year == 2023) // expected: true
// parse — format is auto-detected by default.
let parsed = datetime.parse("2024-06-15")
print(parsed.year) // expected: 2024
print(parsed.month) // expected: 6
print(parsed.day) // expected: 15
// add_days — calendar arithmetic. NOTE: add_days/add_hours operate
// on timestamps (Int seconds since epoch) and return a timestamp;
// re-wrap with from_timestamp to read calendar fields.
let plus3_ts = datetime.add_days(parsed.timestamp, 3)
let plus3 = datetime.from_timestamp(plus3_ts)
print(plus3.day) // expected: 18
// add_hours.
let plus5h_ts = datetime.add_hours(parsed.timestamp, 5)
let plus5h = datetime.from_timestamp(plus5h_ts)
print(plus5h.hour) // expected: 5
Requer a CLI/host do Zolo — abra no playground ou rode localmente.