Õppige oma Rusti projektides kuupäevade ja kellaaegade manipuleerimise põhikontseptsioone.

Kuupäeva ja kellaaja käsitlemine on paljude rakenduste oluline aspekt, alates ülesannete ajastamise ja andmete analüüsimise kuni arvutuste tegemise ja andmete esituse tagamiseni.

Rustil on palju teeke ja mooduleid kuupäevade ja kellaaegadega töötamiseks. Rooste annab sisseehitatud aega aedik ajaga seotud toimingute jaoks ning Chrono teek töötab kuupäeva ja kellaaja toimingute jaoks paljude teiste Rusti teekidega.

Kuupäeva ja kellaajaga töötamise alustamine roostes

Chrono on kuupäeva ja kellaaja teek kuupäevade, kellaaegade, ajavööndite ja kestuste haldamiseks Rustis. Chrono pakub mitmeid funktsioone ja intuitiivset API-d kuupäeva ja kellaaja tüüpide, ajavööndite ja kuupäeva-kellaaja nihke, kestuse ja intervalli, sõelumise ja vormindamise ning kalendritega töötamise jaoks.

Chrono mängib hästi teiste Rusti ökosüsteemi raamatukogudega ja integreerub sujuvalt standardiga raamatukogu I/O-omadused, mis võimaldavad teil lugeda ja kirjutada Chrono kuupäeva ja kellaaja väärtusi erinevatelt ja erinevatelt ojad.

instagram viewer

Lisaks toetab Chrono serialiseerimist ja deserialiseerimist Serde kasti, mis muudab Chrono tüüpidega töötamise lihtsaks JSON-, YAML-i ja muudes vormingutes. Chrono integreerimine Serde'iga muudab selle sobivaks kuupäeva ja kellaaja toimingute jaoks veebirakenduste loomine Rustis.

Saate oma asukoha hankimiseks kasutada Chronot UTC (koordineeritud universaalaeg) paljude toimingute jaoks, nagu konversioonid.

Lisage see direktiiv sõltuvused osa teie Cargo.toml faili installimiseks ja kasutamiseks krono kast:

[sõltuvused]
krono = "0.4.24"

Pärast installimist krono kasti, saate kasutada krono oma Rusti projektis, importides kasti järgmiselt:

kasutada krono:: prelüüd::*;

Chrono on üks Rust-kastidest, mida oma arendusarsenalis vajate, kuna see pakub enamikku kuupäeva- ja kellaajatoimingute funktsioonidest.

Ajavööndid ja ajakäsitlus Rust With Chronoga

Ajavööndid tagavad, et ajatemplid ja ajaga seotud teave on erinevates geograafilistes asukohtades täpsed ja ühtsed. Ajaga seotud andmetega töötades on ebaselguse ja ebatäpsuste vältimiseks oluline arvestada ajavöönditega. Sellised toimingud nagu ajatemplite võrdlemine, kestuste arvutamine või sündmuste ajastamine ilma õige ajavööndi käsitlemiseta võivad anda ootamatuid tulemusi.

Chrono abil saate ajavööndeid teisendada. Siin on näide a teisendamiseks Kuupäev Kellaaeg ühest ajavööndist teise:

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

fnconvert_timezone() {
lase utc_time: DateTime = Utc:: now();
lase local_time: DateTime = utc_time.with_timezone(&Local);

println!("UTC aeg: {}", utc_time);
println!("Kohalik aeg: {}", kohalik aeg);
}

The convert_timezone funktsioon otsib praeguse UTC nupuga Utc:: nüüd meetod, teisendab UTC kohalikuks ajavööndiks koos_ajavööndiga meetod, mis viitab Kohalik struct ja tagastab a Kuupäev Kellaaeg objekt, mis esindab sama ajahetke, kuid asub kohalikus ajavööndis.

Kui helistate convert_timezone funktsiooni, prindib see konsooli UTC ja kohaliku aja.

Lisaks pakub Chrono mugavaid meetodeid ja funktsioone suveaja (DST) ja ajavööndi nihke jaoks. Teie süsteemis saate seda teha kohandada kella suveajale rakenduse Seaded või juhtpaneeli kaudu.

Siin on näide, mis näitab Chrono võimalusi DST ja aja nihkega:

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

fnhand_dst() {
lase utc_time: DateTime = Utc:: now();
lase ny_timezone = Fikseeritud nihe:: ida(5 * 3600);
// Ida suveaeg (EDT) UTC-4:00

lase ny_time: DateTime = utc_time.with_timezone(&ny_timezone);

println!("UTC aeg: {}", utc_time);
println!("New Yorgi aeg: {}", ny_time);
}

The hand_dst funktsioon pääseb praegusele kellaajale nupuga nüüd meetodit ja hangib New Yorgis aja, arvestades samal ajal nihkeaega Fikseeritud nihe:: ida meetod.

Helistades koos_ajavööndiga funktsiooni, teisendate UTC New Yorgi ajavööndiks. Chrono tegeleb aja reguleerimisega vastavalt sobivale DST-le ja tagastab a Kuupäev Kellaaeg objektiks.

DST-ga töötades on oluline meeles pidada, et DST üleminekud toimuvad kindlatel kuupäevadel ja kellaaegadel. Chrono oma Kuupäev Kellaaeg struct on varustatud nende üleminekutega toimetulemiseks ja aja täpse esituse tagamiseks erinevates ajavööndites.

Kestuse ja intervallide arvutused

Kestus on aeg, mis ei sõltu konkreetsest ajahetkest. Võimalik, et peate arvutama kahe sündmuse vahelise kestuse, mõõtma kulunud aega või liitma või lahutama teatud summa määratud ajast.

Rusti standardraamatukogu aega crate pakub terviklikke tööriistu kestuste tõhusaks käsitlemiseks.

Siit saate teada, kuidas saate mõõta funktsiooni täitmisaega aega kast:

kasutada chrono::{DateTime, Utc};
kasutada std:: aeg:: Instant;

fnpeamine() {
lase start = Instant:: now();

// Tehke mõni toiming
// ...

lase end = Instant:: now();
lase kestus = lõpp.kestus_alates (algus);

println!("Möödunud aeg: {:?}", kestus);
}

The peamine funktsioon otsib praeguse kellaaja nupuga Kohene sisseehitatud meetod aega kast. Pärast operatsiooni, peamine funktsioon otsib sel hetkel kellaaja ja hindab erinevust kestus_alates funktsiooni enne ajavahe konsooli printimist.

Serialiseerimine ja deserialiseerimine: JSON-i kuupäeva ja kellaaja teisendamine roostestruktuurideks, kasutades Chronot

Kuupäeva ja kellaaja väärtuste järjestamine ja deserialiseerimine JSON-ist Chrono ja Serde abil on lihtne protsess. Esiteks lisage serde ja serde_json kastid teie projekti sõltuvustele.

[sõltuvused]
serde = { versioon = "1.0", funktsioonid = ["tuletama"] }
serde_json = "1.0"

Järgmisena peate määratlema rooste tüübi ja rakendama selle #[tuletada (seeria, järjestada)] tüübi atribuudid, kus määrate andmetüübi:

kasutada chrono::{DateTime, Utc};

#[tuletada (seeria, järjestada)]
struktuurKoosolek {
algusaeg: kuupäev, kellaaeg,
end_time: DateTime,
}

Saate serialiseerida Koosolek JSON-i koos Serde'iga koos Chrono vormindamisvõimalustega.

Siit saate teada, kuidas saate eksemplari teisendada Koosolek tippige JSON-i:

kasutada serde_json:: to_string;

fnpeamine() {
lase koosolek = Koosolek {
algusaeg: Utc:: now(),
end_time: Utc:: now(),
};

lase json = to_string(&koosolek).unwrap();
println!("{}", json);
}

The peamine funktsioon loob a Koosolek eksemplar väljade praeguse UTC-ga enne väljade kasutamist to_string funktsioon struct eksemplari teisendamiseks konsooli prinditud JSON-stringiks.

Saate hõlpsasti deserialiseerida JSON-i kuupäeva ja kellaaja andmed struktuuritüübiks serde_jsoni abil from_str funktsioon, mis võtab sisse JSON-stringi ja tagastab struktuurieksemplari.

kasutada serde_json:: from_str;

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

lase koosolek: Koosolek = from_str (json).unwrap();
println!("{:#?}", koosolek);
}

The peamine funktsioon deserialiseerib JSON-stringi json muutuja sisse koosolekul näide Koosolek struct enne struct eksemplari konsooli printimist.

Saate rooste abil luua keerukaid rakendusi

Chrono vastupidavus, kasutuslihtsus ja ulatuslik funktsionaalsus muudavad selle asendamatuks tööriistaks teie rakenduste kuupäevade, kellaaegade, kestuse ja intervallide haldamiseks. Chrono võimalusi kasutades saate tagada täpsed ajaarvutused, tõhusa ajastamise ja usaldusväärsed kuupäevadega seotud toimingud.

Chrono üks peamisi kasutusjuhtumeid on veebirakenduste loomine. Chronot saate kasutada tegevusaja kirjeteks, kasutajate tegevuse ajastamiseks ja muudeks veebitoiminguteks.