Darbas su data ir laiku rūdyje

Darbas su data ir laiku rūdyje
Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Datos ir laiko tvarkymas yra esminis daugelio programų aspektas – nuo ​​užduočių planavimo ir duomenų analizės iki skaičiavimų ir duomenų pateikimo užtikrinimo.





Rust turi daug bibliotekų ir modulių, skirtų darbui su datomis ir laiku. Rust suteikia įmontuotą laikas dėžė su laiku susijusioms operacijoms, o Chrono biblioteka sąveikauja su daugeliu kitų Rust bibliotekų datos ir laiko operacijoms atlikti.





DIENOS VAIZDO ĮRAŠO PAGALBA SLĖKITE, KAD TĘSITE SU TURINIU

Darbo su data ir laiku rūdyje pradžia

„Chrono“ yra datos ir laiko biblioteka, skirta datoms, laikui, laiko juostoms ir trukmėms tvarkyti „Rust“. Chrono suteikia daugybę funkcijų ir intuityvią API, skirtą datos ir laiko tipams, laiko juostoms ir datos laiko poslinkiui, trukmei ir intervalui, analizei ir formatavimui bei darbui su kalendoriais.





Chrono puikiai veikia su kitomis Rust ekosistemos bibliotekomis ir sklandžiai integruojasi su standartinės bibliotekos I/O ypatybėmis, leidžiančiomis skaityti ir rašyti Chrono datos ir laiko reikšmes iš įvairių srautų ir į juos.

Be to, Chrono palaiko serializavimą ir deserializavimą per Šerdis dėžę, todėl lengva dirbti su Chrono tipais JSON, YAML ir kitais formatais. „Chrono“ integracija su „Serde“ leidžia atlikti datos ir laiko operacijas kuriant žiniatinklio programas Rust .



Galite naudoti Chrono, kad gautumėte savo vietą UTC (koordinuotas pasaulinis laikas) daugybei operacijų, tokių kaip konvertavimas.

Pridėkite šią direktyvą prie priklausomybės jūsų skyrius mokestis.toml failą, kurį norite įdiegti ir naudoti chrono dėžė:





 [dependencies] 
chrono = "0.4.24"

Įdiegę chrono dėžę, galite naudoti chrono savo Rust projekte importuodami dėžę taip:

 use chrono::prelude::*; 

„Chrono“ yra viena iš „Rust“ dėžių, kurios jums prireiks jūsų kūrimo arsenale, nes joje yra daugumą datos ir laiko operacijų funkcijų.





kaip peržiūrėti senus tekstinius pranešimus

Laiko juostos ir laiko tvarkymas Rust With Chrono

Laiko juostos užtikrina, kad laiko žymos ir su laiku susijusi informacija būtų tiksli ir nuosekli įvairiose geografinėse vietose. Dirbant su laiku susijusiais duomenimis, būtina atsižvelgti į laiko juostas, kad išvengtumėte dviprasmybių ir netikslumų. Tokios operacijos kaip laiko žymų palyginimas, trukmės skaičiavimas ar įvykių planavimas be tinkamo laiko juostos tvarkymo gali duoti netikėtų rezultatų.

Naudodami Chrono galite konvertuoti tarp laiko juostų. Štai pavyzdys, kaip konvertuoti a DataLaikas iš vienos laiko juostos į kitą:

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

fn convert_timezone() {
    let utc_time: DateTime<Utc> = Utc::now();
    let local_time: DateTime<Local> = utc_time.with_timezone(&Local);

    println!("UTC time: {}", utc_time);
    println!("Local time: {}", local_time);
}

The convert_timezone funkcija nuskaito esamą UTC su Utc::now metodą, konvertuoja UTC į vietinę laiko juostą su with_timezone metodas, kuriame atsižvelgiama į Vietinis struktūra ir grąžina a DataLaikas objektas, vaizduojantis tą patį laiko momentą, bet vietinėje laiko juostoje.

Kai skambinate į convert_timezone funkcija, ji išspausdins UTC ir vietinį laiką į konsolę.

  Niujorko laiko spausdinimo rezultatas

Be to, Chrono siūlo patogius vasaros laiko (DST) ir laiko juostos poslinkių metodus ir funkcijas. Savo sistemoje galite nustatykite laikrodį pagal vasaros laiką per nustatymų programą arba valdymo skydelį.

Štai pavyzdys, rodantis Chrono galimybes su DST ir laiko nuokrypiais:

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

fn handle_dst() {
    let utc_time: DateTime<Utc> = Utc::now();
    let ny_timezone = FixedOffset::east(5 * 3600);
    // Eastern Daylight Time (EDT) UTC-4:00

    let ny_time: DateTime<FixedOffset> = utc_time.with_timezone(&ny_timezone);

    println!("UTC time: {}", utc_time);
    println!("New York time: {}", ny_time);
}

The rankena_dst funkcija pasiekia dabartinį laiką su dabar metodą ir nuskaito laiką Niujorke, kartu apskaitant poslinkio laiką su Fiksuotas poslinkis::rytai metodas.

Paskambinus į with_timezone funkciją, UTC konvertuojate į Niujorko laiko juostą. Chrono tvarko laiko koregavimus pagal atitinkamą DST ir grąžina a DataLaikas objektas.

geriausia vieta pirkti kolegijos vadovėlius
  Niujorko laiko spausdinimo rezultatas

Kai dirbate su DST, labai svarbu atsiminti, kad DST perėjimai vyksta tam tikromis datomis ir laiku. Chrono DataLaikas struct yra pritaikyta valdyti šiuos perėjimus ir užtikrinti tikslų laiko atvaizdavimą skirtingose ​​laiko juostose.

Trukmės ir intervalų skaičiavimai

Trukmė yra laikas, nepriklausomas nuo bet kokio konkretaus laiko momento. Gali tekti apskaičiuoti trukmę tarp dviejų įvykių, išmatuoti praėjusį laiką arba pridėti arba atimti tam tikrą sumą iš nurodyto laiko.

Rust standartinė biblioteka laikas „Crate“ suteikia visapusiškus įrankius, leidžiančius efektyviai valdyti trukmę.

Štai kaip galite išmatuoti funkcijos vykdymo laiką naudodami laikas dėžė:

 use chrono::{DateTime, Utc}; 
use std::time::Instant;

fn main() {
    let start = Instant::now();

    // Perform some operation
    // ...

    let end = Instant::now();
    let duration = end.duration_since(start);

    println!("Elapsed time: {:?}", duration);
}

The pagrindinis funkcija nuskaito esamą laiką su Momentinis įmontuoto metodas laikas dėžė. Po operacijos, pagrindinis funkcija nuskaito laiką tą akimirką ir įvertina skirtumą su trukmė_nuo funkcija prieš spausdinant laiko skirtumą į konsolę.

Serializavimas ir serializavimas: JSON datos ir laiko konvertavimas į rūdžių struktūras naudojant Chrono

JSON datos ir laiko reikšmių nuoseklinimas ir nuoseklumas naudojant Chrono ir Serde yra nesudėtingas procesas. Pirmiausia pridėkite šerdis ir serde_json dėžės prie jūsų projekto priklausomybių.

 [dependencies] 
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

Tada turėsite apibrėžti rūdžių tipą ir įdiegti #[išvesti (serializuoti, serializuoti)] tipo, kuriame nurodysite duomenų tipą, atributai:

 use chrono::{DateTime, Utc}; 

#[derive(Serialize, Deserialize)]
struct Meeting {
    start_time: DateTime<Utc>,
    end_time: DateTime<Utc>,
}

Galite serializuoti Susitikimas struct į JSON su Serde kartu su Chrono formatavimo galimybėmis.

kaip gauti gif vaizdus

Štai kaip galite konvertuoti egzempliorių Susitikimas įveskite JSON:

 use serde_json::to_string; 

fn main() {
    let meeting = Meeting {
        start_time: Utc::now(),
        end_time: Utc::now(),
    };

    let json = to_string(&meeting).unwrap();
    println!("{}", json);
}

The pagrindinis funkcija sukuria a Susitikimas pavyzdį su dabartine UTC laukams prieš naudodami to_string funkcija konvertuoti struktūros egzempliorių į JSON eilutę, išspausdintą konsolėje.

Galite lengvai deserializuoti JSON datos ir laiko duomenis į struktūros tipą naudodami serde_json from_str funkcija, kuri paima JSON eilutę ir grąžina struktūros egzempliorių.

 use serde_json::from_str; 

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

    let meeting: Meeting = from_str(json).unwrap();
    println!("{:#?}", meeting);
}

The pagrindinis funkcija deserializuoja JSON eilutę iš json kintamasis į susitikimas pavyzdys Susitikimas struct prieš spausdindami struct egzempliorių į konsolę.

Su rūdimis galite kurti sudėtingas programas

Dėl „Chrono“ tvirtumo, naudojimo paprastumo ir plačių funkcijų jis yra nepakeičiamas įrankis tvarkant jūsų programų datas, laiką, trukmę ir intervalus. Naudodami Chrono galimybes galite užtikrinti tikslius laiko skaičiavimus, efektyvų planavimą ir patikimas su data susijusias operacijas.

Vienas iš pagrindinių Chrono naudojimo atvejų yra interneto programų kūrimas. Galite naudoti Chrono veiklos laiko įrašams, naudotojo veiklos laiko nustatymui ir kitoms žiniatinklio operacijoms atlikti.