Obvladajte bistvene koncepte za manipulacijo datumov in ur v svojih projektih Rust.

Upravljanje z datumom in časom je ključni vidik številnih aplikacij, od načrtovanja opravil in analiziranja podatkov do izvajanja izračunov in zagotavljanja predstavitve podatkov.

Rust ima veliko knjižnic in modulov za delo z datumi in časi. Rust zagotavlja vgrajeno čas zaboj za operacije, povezane s časom, knjižnica Chrono pa sodeluje s številnimi drugimi knjižnicami Rust za operacije datuma in časa.

Kako začeti delati z datumom in uro v Rustu

Chrono je datumsko-časovna knjižnica za obdelavo datumov, ur, časovnih pasov in trajanja v Rustu. Chrono ponuja številne funkcije in intuitiven API za vrste datuma in časa, časovne pasove in zamik datuma in časa, trajanje in interval, razčlenjevanje in oblikovanje ter delo s koledarji.

Chrono se dobro ujema z drugimi knjižnicami v ekosistemu Rust in se brezhibno integrira s standardom V/I lastnosti knjižnice, ki vam omogočajo branje in pisanje datumskih in časovnih vrednosti Chrono iz in v različne tokovi.

instagram viewer

Poleg tega ima Chrono podporo za serializacijo in deserializacijo prek Serde zaboj, kar olajša delo z vrstami Chrono v formatih JSON, YAML in drugih. Integracija Chrona s Serdejem omogoča, da je primeren za operacije datuma in časa izdelava spletnih aplikacij v Rustu.

Chrono lahko uporabite za pridobitev vaše lokacije UTC (Univerzalni koordinirani čas) za številne operacije, kot so pretvorbe.

Dodajte to direktivo v odvisnosti del vašega Cargo.toml datoteko za namestitev in uporabo krono zaboj:

[odvisnosti]
krono = "0.4.24"

Po namestitvi krono zaboj, lahko uporabite krono v vašem projektu Rust tako, da uvozite zaboj kot:

uporaba krono:: preludij::*;

Chrono je eden od zabojev Rust, ki jih boste potrebovali v svojem razvojnem arzenalu, saj ponuja večino funkcij za datumske in časovne operacije.

Časovni pasovi in ​​ravnanje s časom v Rust s Chrono

Časovni pasovi zagotavljajo, da so časovni žigi in informacije, povezane s časom, točni in dosledni na različnih geografskih lokacijah. Pri delu s podatki, povezanimi s časom, je nujno upoštevati časovne pasove, da preprečite dvoumnost in netočnosti. Operacije, kot je primerjava časovnih žigov, izračun trajanja ali razporejanje dogodkov brez ustreznega ravnanja s časovnim pasom, lahko prinesejo nepričakovane rezultate.

S programom Chrono lahko pretvarjate med časovnimi pasovi. Tukaj je primer pretvorbe a Datum čas iz enega časovnega pasu v drugega:

uporaba chrono::{DateTime, Utc, Local, TimeZone};

fnconvert_timezone() {
pustiti utc_time: datum in čas = Utc:: zdaj();
pustiti lokalni_čas: datum in čas = utc_time.with_timezone(&Local);

println!("UTC čas: {}", utc_time);
println!("Lokalni čas: {}", lokalni čas);
}

The convert_timezone funkcija pridobi trenutni UTC z Utc:: zdaj metoda, pretvori UTC v lokalni časovni pas z with_timezone metoda, ki se nanaša na Lokalno struct in vrne a Datum čas objekt, ki predstavlja isto točko v času, vendar v lokalnem časovnem pasu.

Ko pokličete convert_timezone funkcijo, bo na konzolo natisnil UTC in lokalni čas.

Poleg tega Chrono ponuja priročne metode in funkcije za poletni čas (DST) in zamike časovnih pasov. V vašem sistemu lahko nastavite uro na poletni čas prek aplikacije Nastavitve ali nadzorne plošče.

Tukaj je primer, ki prikazuje zmogljivosti Chrona s poletnim časom in časovnimi zamiki:

uporaba chrono::{DateTime, Utc, FixedOffset};

fnhandle_dst() {
pustiti utc_time: datum in čas = Utc:: zdaj();
pustiti ny_timezone = FixedOffset:: east(5 * 3600);
// vzhodni poletni čas (EDT) UTC-4:00

pustiti ny_time: datum in čas = utc_time.with_timezone(&ny_timezone);

println!("UTC čas: {}", utc_time);
println!(»Newyorški čas: {}«, ny_time);
}

The handle_dst funkcija dostopa do trenutnega časa z zdaj metodo in pridobi čas v New Yorku, medtem ko upošteva čas zamika z FixedOffset:: vzhod metoda.

S klicem na with_timezone funkcijo, pretvarjate UTC v časovni pas New Yorka. Chrono obravnava prilagoditve časa glede na ustrezni poletni čas in vrne a Datum čas predmet.

Ko delate s poletnim časom, je ključnega pomena, da se spomnite, da se prehodi na poletni čas zgodijo ob določenih datumih in urah. Chrono's Datum čas struct je opremljen za obvladovanje teh prehodov in zagotavljanje natančne predstavitve časa v različnih časovnih pasovih.

Izračuni trajanja in intervalov

Trajanje je čas, neodvisen od katere koli določene točke v času. Morda boste morali izračunati trajanje med dvema dogodkoma, izmeriti pretečeni čas ali dodati ali odšteti določeno količino od določenega časa.

Standardna knjižnica Rust čas zaboj ponuja obsežna orodja za učinkovito rokovanje s trajanji.

Tukaj je opisano, kako lahko izmerite čas izvajanja funkcije z čas zaboj:

uporaba chrono::{DatumTime, Utc};
uporaba std:: time:: Instant;

fnglavni() {
pustiti start = Instant:: now();

// Izvedite neko operacijo
// ...

pustiti konec = Takoj:: zdaj();
pustiti trajanje = end.duration_since (začetek);

println!("Pretečen čas: {:?}", trajanje);
}

The glavni funkcija pridobi trenutni čas z Instant metoda vgrajenega čas zaboj. Po operaciji je glavni funkcija pridobi čas v tem trenutku in ovrednoti razliko z trajanje_od funkcijo, preden na konzolo natisnete časovno razliko.

Serializacija in deserializacija: Pretvarjanje datuma in časa JSON v Rust Structs z uporabo Chrono

Serializacija in deserializacija vrednosti datuma in časa iz JSON z uporabo Chrono in Serde je preprost postopek. Najprej dodajte serde in serde_json zaboje v odvisnosti vašega projekta.

[odvisnosti]
serde = { različica = "1.0", funkcije = ["izpeljati"] }
serde_json = "1.0"

Nato boste morali definirati vrsto Rust in implementirati #[izpelji (serializiraj, deserializiraj)] atributi za vrsto, kjer boste določili vrsto podatkov:

uporaba chrono::{DatumTime, Utc};

#[izpelji (serializiraj, deserializiraj)]
structSrečanje {
začetni_čas: datum in čas,
končni_čas: datum in čas,
}

Lahko serializirate Srečanje strukturirajte v JSON s Serdejem skupaj z zmožnostmi oblikovanja Chrono.

Evo, kako lahko pretvorite primerek Srečanje vnesite v JSON:

uporaba serde_json:: to_string;

fnglavni() {
pustiti srečanje = srečanje {
začetni_čas: UTC:: zdaj(),
končni_čas: UTC:: zdaj(),
};

pustiti json = to_string(&sestanek).unwrap();
println!("{}", json);
}

The glavni funkcija ustvari a Srečanje primerek s trenutnim UTC za polja pred uporabo na_niz funkcijo za pretvorbo primerka strukture v niz JSON, natisnjen na konzoli.

Podatke o datumu in času JSON lahko enostavno deserializirate v vrsto strukture s serde_json from_str funkcija, ki sprejme niz JSON in vrne primerek strukture.

uporaba serde_json:: from_str;

fnglavni() {
pustiti json = r#"{"start_time": "2023-05-28T12:00:00Z", "end_time": "2023-05-28T14:00:00Z"}"#;

pustiti srečanje: srečanje = from_str (json).unwrap();
println!("{:#?}", srečanje);
}

The glavni funkcija deserializira niz JSON iz json spremenljivko v srečanje primerek Srečanje struct, preden natisnete primerek struct na konzolo.

Z Rustom lahko izdelate prefinjene aplikacije

Chrono je zaradi robustnosti, enostavne uporabe in obsežne funkcionalnosti nepogrešljivo orodje za upravljanje datumov, ur, trajanja in intervalov vaših aplikacij. Z izkoriščanjem zmogljivosti Chrono lahko zagotovite natančne izračune časa, učinkovito načrtovanje in zanesljive operacije, povezane z datumom.

Eden ključnih primerov uporabe za Chrono je izdelava spletnih aplikacij. Chrono lahko uporabljate za beleženje časa dejavnosti, merjenje časa dejavnosti uporabnikov in druge spletne operacije.