Chrono mira a fornire tutte le funzionalità necessarie per manipolare correttamente date e orari nel calendario gregoriano:
DateTime
è consapevole del fuso orario per impostazione predefinita, pur offrendo tipi indipendenti dal fuso.Option
o MappedLocalTime
.Local
funziona con quello attuale del sistema operativo.Chrono-TZ
o tzfile
per supporto completo.Chrono supporta vari ambienti runtime e sistemi operativi, con diverse funzionalità attivabili o disattivabili.
alloc
: Abilita funzioni che richiedono allocazione di memoria (principalmente formattazione di stringhe).std
: Abilita funzioni dipendenti dalla libreria standard. Sovrainsieme di alloc
, aggiunge interoperabilità con tipi e tratti standard.clock
: Abilita la lettura del fuso orario locale (Local
). Sovrainsieme di now
.now
: Abilita la lettura dell'orario di sistema (now
).wasmbind
: Fornisce un'interfaccia con l'API JS Date per target wasm32.serde
: Abilita serializzazione/deserializzazione via serde.rkyv
: Deprecato, usa le funzionalità rkyv-*
.rkyv-16
, rkyv-32
, rkyv-64
: Abilita serializzazione/deserializzazione via rkyv, con interi a 16, 32 o 64 bit rispettivamente.rkyv-validation
: Abilita supporto alla validazione rkyv con bytecheck.arbitrary
: Costruisce istanze arbitrarie di tipi con la crate Arbitrary.unstable-locales
: Abilita localizzazione. Aggiunge metodi con suffisso _localized
.Chrono fornisce il tipo TimeDelta
per rappresentare intervalli temporali. È una durata "precisa" in secondi e nanosecondi, senza componenti "nominali" come giorni o mesi.
Precedentemente chiamato Duration
(ancora disponibile come alias), si distingue da core::time::Duration
per essere con segno anziché senza.
Chrono offre il tipo DateTime
per rappresentare date e orari con fuso orario.
DateTime
è consapevole del fuso e deve essere costruito da un oggetto TimeZone
, che definisce la conversione da/verso UTC. Tre implementazioni note:
Utc
: Specifica il fuso UTC. Il più efficiente.Local
: Specifica il fuso locale del sistema.FixedOffset
: Specifica un fuso fisso arbitrario, come UTC+09:00 o UTC-10:30.DateTime
con diversi TimeZone
sono tipi distinti, ma convertibili tramite DateTime::with_timezone
.
Puoi ottenere la data e l'ora corrente in UTC (Utc::now()
) o locale (Local::now()
).
Inoltre, puoi creare date e orari personalizzati:
La formattazione avviene tramite il metodo format
, con sintassi simile a strftime.
Anche to_string
e {:?}
forniscono rappresentazioni leggibili. Chrono include anche to_rfc2822
e to_rfc3339
per formati comuni.
Ora Chrono supporta la formattazione localizzata in quasi tutte le lingue senza librerie C aggiuntive (funzionalità unstable-locales
):
Il parsing può avvenire in due modi:
FromStr
(e il metodo parse
sulle stringhe) può analizzare DateTime<FixedOffset>
, DateTime<Utc>
e DateTime<Local>
.DateTime::parse_from_str
analizza data e ora con offset, restituendo DateTime<FixedOffset>
.Usa DateTime::from_timestamp(secondi, nanosecondi)
per costruire DateTime<Utc>
da un timestamp UNIX.
Usa DateTime.timestamp
per ottenere il timestamp (in secondi) da un DateTime
. Inoltre, DateTime.timestamp_subsec_nanos
fornisce i nanosecondi aggiuntivi.