Rad s datumom i vremenom u Rustu

Rad s datumom i vremenom u Rustu
Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Rukovanje datumom i vremenom ključni je aspekt mnogih aplikacija, od planiranja zadataka i analize podataka do izvođenja izračuna i osiguravanja prikaza podataka.





Rust ima mnogo biblioteka i modula za rad s datumima i vremenima. Rust pruža ugrađeni vrijeme sanduk za operacije povezane s vremenom, a Chrono biblioteka interoperira s mnogim drugim Rust bibliotekama za operacije datuma i vremena.





prijenosno računalo ne spava kada je poklopac zatvoren windows 10
MAKEUSEOF VIDEO DANA POMICI SE ZA NASTAVAK SA SADRŽAJEM

Početak rada s datumom i vremenom u Rustu

Chrono je biblioteka datuma i vremena za rukovanje datumima, vremenima, vremenskim zonama i trajanjima u Rustu. Chrono pruža višestruke značajke i intuitivni API za vrste datuma i vremena, vremenske zone i pomak datuma i vremena, trajanje i interval, raščlanjivanje i oblikovanje te rad s kalendarima.





Chrono se dobro slaže s drugim bibliotekama u Rust ekosustavu i besprijekorno se integrira s I/O značajkama standardne biblioteke omogućujući vam čitanje i pisanje Chrono vrijednosti datuma i vremena iz i u različite tokove.

Dodatno, Chrono ima podršku za serijalizaciju i deserijalizaciju kroz Jezgra sanduk, što olakšava rad s Chrono tipovima u JSON, YAML i drugim formatima. Chronoova integracija sa Serdeom čini ga prikladnim za operacije datuma i vremena izrada web aplikacija u Rustu .



Možete koristiti Chrono za dohvaćanje svoje lokacije UTC (Univerzalno koordinirano vrijeme) za brojne operacije poput konverzija.

Dodajte ovu direktivu u ovisnosti dio vašeg naplatiti.toml datoteku za instaliranje i korištenje krono sanduk:





 [dependencies] 
chrono = "0.4.24"

Nakon instaliranja krono sanduk, možete koristiti krono u vašem Rust projektu uvozom sanduka na sljedeći način:

 use chrono::prelude::*; 

Chrono je jedan od Rust sanduka koji će vam trebati u vašem razvojnom arsenalu budući da pruža većinu značajki za operacije datuma i vremena.





Vremenske zone i rukovanje vremenom u Rustu s Chronom

Vremenske zone osiguravaju da su vremenske oznake i informacije povezane s vremenom točne i dosljedne na različitim geografskim lokacijama. Dok radite s vremenskim podacima, važno je uzeti u obzir vremenske zone kako biste spriječili dvosmislenost i netočnosti. Operacije poput usporedbe vremenskih oznaka, izračunavanja trajanja ili zakazivanja događaja bez odgovarajućeg rukovanja vremenskom zonom mogu dati neočekivane rezultate.

Uz Chrono možete mijenjati vremenske zone između njih. Evo primjera pretvaranja a Datum vrijeme iz jedne vremenske zone u drugu:

 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 pretvoriti vremensku zonu funkcija dohvaća trenutni UTC s Utc::sada metoda, pretvara UTC u lokalnu vremensku zonu s s_vremenskom zonom metoda koja se odnosi na Lokalni struct i vraća a Datum vrijeme objekt koji predstavlja istu točku u vremenu, ali u lokalnoj vremenskoj zoni.

Kada nazovete pretvoriti vremensku zonu funkciju, ispisat će UTC i lokalno vrijeme na konzolu.

  rezultat tiskanja njujorškog vremena

Osim toga, Chrono nudi prikladne metode i funkcije za ljetno računanje vremena (DST) i pomake vremenske zone. U vašem sustavu možete podesite sat za ljetno računanje vremena putem aplikacije Postavke ili upravljačke ploče.

Evo primjera koji pokazuje mogućnosti Chrona s DST-om i vremenskim odmacima:

 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 rukovanje_dst funkcija pristupa trenutnom vremenu pomoću sada metodu i dohvaća vrijeme u New Yorku dok uračunava vrijeme pomaka s Fiksni pomak::istok metoda.

Pozivom na s_vremenskom zonom funkciju, pretvarate UTC u vremensku zonu New Yorka. Chrono obrađuje prilagodbe vremena u skladu s odgovarajućim DST-om i vraća a Datum vrijeme objekt.

  rezultat tiskanja njujorškog vremena

Kada radite s DST-om, ključno je zapamtiti da se prijelazi na DST događaju na određene datume i vremena. Chrono's Datum vrijeme struct je opremljen za rukovanje tim prijelazima i osigurava točne prikaze vremena u različitim vremenskim zonama.

sim nije predviđen mm #2 u & t

Izračuni trajanja i intervala

Trajanje je vrijeme neovisno o bilo kojoj specifičnoj točki u vremenu. Možda ćete morati izračunati trajanje između dva događaja, izmjeriti proteklo vrijeme ili dodati ili oduzeti određeni iznos od određenog vremena.

Rust standardna biblioteka vrijeme sanduk pruža opsežne alate za učinkovito rukovanje trajanjima.

Evo kako možete izmjeriti vrijeme izvršenja funkcije pomoću vrijeme sanduk:

 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 glavni funkcija dohvaća trenutno vrijeme s Trenutak metoda ugrađenog vrijeme sanduk. Nakon operacije, glavni funkcija dohvaća vrijeme u tom trenutku i procjenjuje razliku s trajanje_od funkciju prije ispisa vremenske razlike na konzoli.

Serijalizacija i deserijalizacija: Pretvaranje JSON datuma i vremena u Rust Structs pomoću Chrona

Serijalizacija i deserijalizacija vrijednosti datuma i vremena iz JSON-a pomoću programa Chrono i Serde jednostavan je postupak. Prvo dodajte jezgra i serde_json sanduke za ovisnosti vašeg projekta.

kako izbrisati datoteke za preuzimanje sustava Windows
 [dependencies] 
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

Zatim ćete morati definirati vrstu Rust-a i implementirati je #[derive(Serialize, Deserialize)] atributi za vrstu gdje ćete navesti vrstu podataka:

 use chrono::{DateTime, Utc}; 

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

Možete serijalizirati Sastanak strukturirajte u JSON sa Serdeom uz Chrono mogućnosti oblikovanja.

Evo kako možete pretvoriti instancu Sastanak upišite u 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 glavni funkcija stvara a Sastanak instanca s trenutnim UTC-om za polja prije upotrebe na_string funkcija za pretvaranje instance strukture u JSON niz ispisan na konzoli.

Možete jednostavno deserijalizirati JSON podatke o datumu i vremenu u vrstu strukture pomoću serde_json from_str funkcija koja prima JSON niz i vraća instancu strukture.

 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 glavni funkcija deserijalizira JSON niz iz json varijabla u sastanak instanca od Sastanak struct prije ispisa instance strukture na konzolu.

S Rustom možete izraditi sofisticirane aplikacije

Robusnost Chrono-a, jednostavnost korištenja i opsežna funkcionalnost čine ga nezamjenjivim alatom za rukovanje datumima, vremenima, trajanjem i intervalima vaših aplikacija. Možete osigurati točne izračune vremena, učinkovito planiranje i pouzdane operacije povezane s datumom iskorištavanjem mogućnosti Chrona.

Jedan od ključnih slučajeva uporabe za Chrono je izrada web aplikacija. Chrono možete koristiti za evidenciju vremena aktivnosti, mjerenje vremena aktivnosti korisnika i druge web operacije.