Arbeta med datum och tid i Rust

Arbeta med datum och tid i Rust
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Hantering av datum och tid är en avgörande aspekt av många applikationer, från att schemalägga uppgifter och analysera data till att utföra beräkningar och säkerställa datarepresentation.





Rust har många bibliotek och moduler för att arbeta med datum och tider. Rust ger en inbyggd tid låda för tidsrelaterade operationer, och Chrono-biblioteket samverkar med många andra Rust-bibliotek för datum- och tidsoperationer.





MAKEUSE AV DAGENS VIDEO SCROLL FÖR ATT FORTSÄTTA MED INNEHÅLL

Komma igång Arbeta med datum och tid i rost

Chrono är ett datum-tid-bibliotek för hantering av datum, tider, tidszoner och varaktigheter i Rust. Chrono tillhandahåller flera funktioner och ett intuitivt API för datum- och tidstyper, tidszoner och offset datum-tid, varaktighet och intervall, analys och formatering och arbete med kalendrar.





Chrono spelar bra med andra bibliotek i Rust-ekosystemet och integreras sömlöst med standardbibliotekets I/O-egenskaper så att du kan läsa och skriva Chrono-datum och tidsvärden från och till olika strömmar.

Dessutom har Chrono stöd för serialisering och deserialisering genom Kärna låda, vilket gör det enkelt att arbeta med Chrono-typer i JSON, YAML och andra format. Chronos integration med Serde gör den lämplig för datum-tid-operationer medan bygga webbapplikationer i Rust .



Du kan använda Chrono för att hämta din plats UTC (Coordinated Universal Time) för många operationer som konverteringar.

Lägg till detta direktiv till beroenden avsnitt av din charge.toml filen för att installera och använda krono spjällåda:





 [dependencies] 
chrono = "0.4.24"

Efter att ha installerat krono låda, kan du använda krono i ditt Rust-projekt genom att importera lådan så här:

 use chrono::prelude::*; 

Chrono är en av Rust-lådorna du behöver i din utvecklingsarsenal eftersom den tillhandahåller de flesta funktionerna för datum och tid.





Tidszoner och tidshantering i rost med Chrono

Tidszoner säkerställer att tidsstämplar och tidsrelaterad information är korrekt och konsekvent över olika geografiska platser. När du arbetar med tidsrelaterade data är det viktigt att överväga tidszoner för att förhindra oklarheter och felaktigheter. Åtgärder som att jämföra tidsstämplar, beräkna varaktigheter eller schemalägga händelser utan korrekt tidszonshantering kan ge oväntade resultat.

Du kan konvertera mellan tidszoner med Chrono. Här är ett exempel på att konvertera en Datum Tid från en tidszon till en annan:

 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);
}

De convert_timezone funktionen hämtar aktuell UTC med Utc::nu konverterar UTC till den lokala tidszonen med with_timezone metod som tar hänvisning till Lokal struct och returnerar a Datum Tid objekt som representerar samma tidpunkt men i den lokala tidszonen.

När du ringer till convert_timezone funktionen kommer den att skriva ut UTC och lokal tid till konsolen.

  resultatet av att trycka New York-tiden

Dessutom tillhandahåller Chrono bekväma metoder och funktioner för sommartid (DST) och tidszonförskjutningar. I ditt system kan du justera klockan för sommartid via appen Inställningar eller kontrollpanelen.

Här är ett exempel som visar Chronos möjligheter med sommartid och tidsförskjutningar:

 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);
}

De handle_dst funktionen kommer åt den aktuella tiden med nu metod och hämtar tiden i New York samtidigt som den tar hänsyn till offsettiden med FixedOffset::east metod.

Genom att ringa till with_timezone funktion, konverterar du UTC till New Yorks tidszon. Chrono hanterar tidsjusteringarna enligt lämplig sommartid och returnerar en Datum Tid objekt.

  resultatet av att trycka New York-tiden

När du använder sommartid är det viktigt att komma ihåg att sommartid övergångar sker vid specifika datum och tider. Chronos Datum Tid struct är utrustad för att hantera dessa övergångar och säkerställa korrekta representationer av tid i olika tidszoner.

Varaktighet och intervallberäkningar

En varaktighet är en tid som är oberoende av någon specifik tidpunkt. Du kan behöva beräkna varaktigheten mellan två händelser, mäta den förflutna tiden eller lägga till eller subtrahera en viss mängd från en angiven tid.

Rust standardbibliotekets tid låda tillhandahåller omfattande verktyg för effektiv hantering av varaktigheter.

Så här kan du mäta exekveringstiden för en funktion med tid spjällåda:

 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);
}

De huvud funktionen hämtar den aktuella tiden med Omedelbar metod för den inbyggda tid spjällåda. Efter operationen huvud funktionen hämtar tiden vid det ögonblicket och utvärderar skillnaden med duration_sedan funktion innan du skriver ut tidsskillnaden till konsolen.

vad är den mest populära appen

Serialisering och avserialisering: Konvertera JSON-datum och tid till roststrukturer med Chrono

Serialisering och avserialisering av datum- och tidsvärden från JSON med Chrono och Serde är en enkel process. Lägg först till kärna och serde_json lådor till ditt projekts beroenden.

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

Därefter måste du definiera Rust-typen och implementera #[derive(Serialize, Deserialize)] attribut för typen där du anger datatypen:

 use chrono::{DateTime, Utc}; 

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

Du kan serialisera Möte struct till JSON med Serde tillsammans med Chronos formateringsmöjligheter.

Så här kan du konvertera en instans av Möte skriv till 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);
}

De huvud funktion skapar en Möte instans med aktuell UTC för fälten innan du använder att stränga funktion för att konvertera struct-instansen till en JSON-sträng som skrivs ut på konsolen.

Du kan enkelt deserialisera JSON datum-tid-data till en strukturtyp med serde_jsons from_str funktion som tar in en JSON-sträng och returnerar en struct-instans.

 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);
}

De huvud funktion avserialiserar JSON-strängen från json variabel till möte instans av Möte struct innan du skriver ut struct-instansen till konsolen.

Du kan bygga sofistikerade applikationer med rost

Chronos robusthet, användarvänlighet och omfattande funktionalitet gör den till ett oumbärligt verktyg för att hantera dina appars datum, tider, varaktighet och intervall. Du kan säkerställa korrekta tidsberäkningar, effektiv schemaläggning och tillförlitlig datumrelaterade operationer genom att utnyttja Chronos möjligheter.

Ett viktigt användningsfall för Chrono är att bygga webbapplikationer. Du kan använda Chrono för aktivitetstidsregistrering, tajming av användaraktivitet och andra webboperationer.