Įvaldykite pagrindines „Rust“ projektų datų ir laiko manipuliavimo sąvokas.
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.
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 standartu bibliotekos I/O ypatybės, leidžiančios skaityti ir rašyti Chrono datos ir laiko reikšmes nuo įvairių srautai.
Be to, Chrono palaiko serializavimą ir deserializavimą per Serde 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 Krovinys.toml failą, kurį norite įdiegti ir naudoti chrono dėžė:
[priklausomybės]
chrono = "0.4.24"
Įdiegę chrono dėžę, galite naudoti chrono savo Rust projekte importuodami dėžę taip:
naudoti chrono:: preliudija::*;
„Chrono“ yra viena iš „Rust“ dėžių, kurios jums prireiks jūsų kūrimo arsenale, nes joje yra daugumą datos ir laiko operacijų funkcijų.
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ą:
naudoti chrono::{DateTime, Utc, Local, TimeZone};
fnconvert_timezone() {
leisti utc_time: DataLaikas= Utc:: now();
leisti local_time: DateTime= utc_time.with_timezone(&Local);
println!("UTC laikas: {}", utc_time);
println!("Vietinis laikas: {}", vietinis laikas);
}
The convert_timezone funkcija nuskaito esamą UTC su Utc:: dabar 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ę.
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:
naudoti chrono::{DateTime, Utc, FixedOffset};
fnrankena_dst() {
leisti utc_time: DataLaikas= Utc:: now();
leisti ny_timezone = Fiksuotas poslinkis:: rytai(5 * 3600);
// Rytų vasaros laikas (EDT) UTC-4:00leisti ny_time: DataLaikas
= utc_time.with_timezone(&ny_timezone);
println!("UTC laikas: {}", utc_time);
println!("Niujorko laikas: {}", 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.
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ėžė:
naudoti chrono::{DateTime, Utc};
naudoti std:: laikas:: Momentinis;fnpagrindinis() {
leisti start = Instant:: now();// Atlikite tam tikrą operaciją
// ...leisti pabaiga = Momentinis:: dabar();
leisti trukmė = pabaiga.trukmė_nuo (pradžia);
println!("Praėjęs laikas: {:?}", trukmė);
}
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 serde ir serde_json dėžės prie jūsų projekto priklausomybių.
[priklausomybės]
serde = { versija = "1.0", funkcijos = ["išvesti"] }
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:
naudoti chrono::{DateTime, Utc};
#[išvesti (serializuoti, serializuoti)]
struktūraSusitikimas {
pradžios_laikas: DataLaikas,
pabaigos_laikas: DataLaikas,
}
Galite serializuoti Susitikimas struct į JSON su Serde kartu su Chrono formatavimo galimybėmis.
Štai kaip galite konvertuoti egzempliorių Susitikimas įveskite JSON:
naudoti serde_json:: to_string;
fnpagrindinis() {
leisti susitikimas = susitikimas {
start_time: Utc:: now(),
pabaigos_laikas: Utc:: dabar(),
};
leisti json = to_string(&susitikimas).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ų.
naudoti serde_json:: from_str;
fnpagrindinis() {
leisti json = r#"{"start_time": "2023-05-28T12:00:00Z", "end_time": "2023-05-28T14:00:00Z"}"#;
leisti susitikimas: Susitikimas = from_str (json).unwrap();
println!("{:#?}", susitikimas);
}
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.