Pular para o conteúdo

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.

01-now.zolo
Playground
// 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.

02-format.zolo
Playground
// 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.

03-parse.zolo
Playground
// 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.

Buscar no Zolo

9 resultados

enespt-br