Κατακτήστε τις βασικές έννοιες για τον χειρισμό ημερομηνιών και ωρών στα έργα Rust σας.

Ο χειρισμός της ημερομηνίας και της ώρας είναι μια κρίσιμη πτυχή πολλών εφαρμογών, από τον προγραμματισμό εργασιών και την ανάλυση δεδομένων έως την εκτέλεση υπολογισμών και τη διασφάλιση της αναπαράστασης δεδομένων.

Το Rust έχει πολλές βιβλιοθήκες και ενότητες για εργασία με ημερομηνίες και ώρες. Το Rust παρέχει ένα ενσωματωμένο χρόνος κιβώτιο για λειτουργίες που σχετίζονται με το χρόνο και η βιβλιοθήκη Chrono διαλειτουργεί με πολλές άλλες βιβλιοθήκες Rust για λειτουργίες ημερομηνίας και ώρας.

Ξεκινώντας να εργάζεστε με την ημερομηνία και την ώρα στο Rust

Το Chrono είναι μια βιβλιοθήκη ημερομηνίας-ώρας για το χειρισμό ημερομηνιών, ωρών, ζωνών ώρας και διάρκειες στο Rust. Το Chrono παρέχει πολλαπλές δυνατότητες και ένα διαισθητικό API για τύπους ημερομηνίας και ώρας, ζώνες ώρας και αντιστάθμιση ημερομηνίας-ώρας, διάρκειας και διαστήματος, ανάλυσης και μορφοποίησης και εργασίας με ημερολόγια.

Το Chrono παίζει καλά με άλλες βιβλιοθήκες στο οικοσύστημα Rust και ενσωματώνεται άψογα με το πρότυπο τα χαρακτηριστικά εισόδου/εξόδου της βιβλιοθήκης που σας επιτρέπουν να διαβάζετε και να γράφετε τιμές ημερομηνίας και ώρας Chrono από και προς διάφορα ρέματα.

instagram viewer

Επιπλέον, το Chrono έχει υποστήριξη για σειριοποίηση και αποσειροποίηση μέσω του Serde crate, καθιστώντας εύκολη την εργασία με τύπους Chrono σε JSON, YAML και άλλες μορφές. Η ενσωμάτωση του Chrono με το Serde το καθιστά κατάλληλο για λειτουργίες ημερομηνίας και ώρας ενώ κατασκευή διαδικτυακών εφαρμογών στο Rust.

Μπορείτε να χρησιμοποιήσετε το Chrono για να ανακτήσετε την τοποθεσία σας UTC (Συντονισμένη Παγκόσμια Ώρα) για πολλές λειτουργίες όπως μετατροπές.

Προσθέστε αυτήν την οδηγία στο εξαρτήσεις τμήμα σας Cargo.toml αρχείο για εγκατάσταση και χρήση του χρονο σακαράκα:

[εξαρτήσεις]
χρονο = "0.4.24"

Μετά την εγκατάσταση του χρονο κλουβί, μπορείτε να χρησιμοποιήσετε χρονο στο έργο Rust εισάγοντας το κιβώτιο ως εξής:

χρήση chrono:: πρελούδιο::*;

Το Chrono είναι ένα από τα κιβώτια Rust που θα χρειαστείτε στο οπλοστάσιο ανάπτυξής σας, καθώς παρέχει τις περισσότερες από τις λειτουργίες για λειτουργίες ημερομηνίας και ώρας.

Ζώνες ώρας και χειρισμός χρόνου σε σκουριά με το Chrono

Οι ζώνες ώρας διασφαλίζουν ότι οι χρονικές σημάνσεις και οι πληροφορίες που σχετίζονται με το χρόνο είναι ακριβείς και συνεπείς σε διάφορες γεωγραφικές τοποθεσίες. Ενώ εργάζεστε με δεδομένα που σχετίζονται με την ώρα, είναι απαραίτητο να λαμβάνετε υπόψη τις ζώνες ώρας για να αποτρέπονται ασάφειες και ανακρίβειες. Λειτουργίες όπως η σύγκριση χρονικών σημάνσεων, ο υπολογισμός των διάρκειων ή ο προγραμματισμός συμβάντων χωρίς τον κατάλληλο χειρισμό ζώνης ώρας μπορούν να αποφέρουν απροσδόκητα αποτελέσματα.

Μπορείτε να κάνετε μετατροπή μεταξύ ζωνών ώρας με το Chrono. Ακολουθεί ένα παράδειγμα μετατροπής α Ημερομηνία ώρα από τη μια ζώνη ώρας στην άλλη:

χρήση chrono::{DateTime, Utc, Local, TimeZone};

στconvert_timezone() {
αφήνω utc_time: DateTime = Utc:: now();
αφήνω local_time: DateTime = utc_time.with_timezone(&Local);

println!("Ώρα UTC: {}", utc_time);
println!("Τοπική ώρα: {}", Τοπική ώρα);
}

ο convert_timezone η συνάρτηση ανακτά την τρέχουσα UTC με το Utc:: τώρα μέθοδος, μετατρέπει το UTC στην τοπική ζώνη ώρας με το with_timezone μέθοδο που λαμβάνει σε σχέση με το Τοπικός struct και επιστρέφει α Ημερομηνία ώρα αντικείμενο που αντιπροσωπεύει το ίδιο χρονικό σημείο αλλά στην τοπική ζώνη ώρας.

Όταν καλείτε το convert_timezone λειτουργία, θα εκτυπώσει την UTC και την τοπική ώρα στην κονσόλα.

Επιπλέον, το Chrono παρέχει βολικές μεθόδους και λειτουργίες για τη θερινή ώρα (DST) και τις μετατοπίσεις ζώνης ώρας. Στο σύστημά σας, μπορείτε ρυθμίστε το ρολόι για τη θερινή ώρα μέσω της εφαρμογής Ρυθμίσεις ή του Πίνακα Ελέγχου.

Ακολουθεί ένα παράδειγμα που δείχνει τις δυνατότητες του Chrono με DST και μετατοπίσεις ώρας:

χρήση chrono::{DateTime, Utc, FixedOffset};

στhandle_dst() {
αφήνω utc_time: DateTime = Utc:: now();
αφήνω ny_timezone = FixedOffset:: east(5 * 3600);
// Ανατολική θερινή ώρα (EDT) UTC-4:00

αφήνω ny_time: DateTime = utc_time.with_timezone(&ny_timezone);

println!("Ώρα UTC: {}", utc_time);
println!("Ώρα Νέας Υόρκης: {}", ny_time);
}

ο handle_dst η λειτουργία έχει πρόσβαση στην τρέχουσα ώρα με το τώρα μέθοδο και ανακτά την ώρα στη Νέα Υόρκη ενώ υπολογίζει τον χρόνο αντιστάθμισης με το FixedOffset:: ανατολικά μέθοδος.

Καλώντας το with_timezone συνάρτηση, μετατρέπετε το UTC στη ζώνη ώρας της Νέας Υόρκης. Το Chrono χειρίζεται τις ρυθμίσεις ώρας σύμφωνα με την κατάλληλη θερινή ώρα και επιστρέφει α Ημερομηνία ώρα αντικείμενο.

Όταν λειτουργείτε με θερινή ώρα, είναι σημαντικό να θυμάστε ότι οι μεταβάσεις θερινής ώρας πραγματοποιούνται σε συγκεκριμένες ημερομηνίες και ώρες. του Chrono Ημερομηνία ώρα Το struct είναι εξοπλισμένο για να χειρίζεται αυτές τις μεταβάσεις και να διασφαλίζει ακριβείς αναπαραστάσεις του χρόνου σε διαφορετικές ζώνες ώρας.

Υπολογισμοί Διάρκειας και Διαστήματος

Η διάρκεια είναι ένας χρόνος ανεξάρτητος από οποιοδήποτε συγκεκριμένο χρονικό σημείο. Ίσως χρειαστεί να υπολογίσετε τη διάρκεια μεταξύ δύο γεγονότων, να μετρήσετε τον χρόνο που έχει παρέλθει ή να προσθέσετε ή να αφαιρέσετε ένα συγκεκριμένο ποσό από έναν καθορισμένο χρόνο.

Η τυπική βιβλιοθήκη Rust χρόνος Το crate παρέχει ολοκληρωμένα εργαλεία για αποτελεσματικό χειρισμό διάρκειας.

Δείτε πώς μπορείτε να μετρήσετε τον χρόνο εκτέλεσης μιας συνάρτησης με το χρόνος σακαράκα:

χρήση chrono::{DateTime, Utc};
χρήση std:: time:: Instant;

στκύριος() {
αφήνω start = Instant:: now();

// Εκτελέστε κάποια λειτουργία
// ...

αφήνω end = Instant:: now();
αφήνω duration = end.duration_since (έναρξη);

println!("Χρόνος που παρήλθε: {:?}", διάρκεια);
}

ο κύριος η λειτουργία ανακτά την τρέχουσα ώρα με το Στιγμή μέθοδος του ενσωματωμένου χρόνος σακαράκα. Μετά την επέμβαση, το κύριος Η συνάρτηση ανακτά το χρόνο εκείνη τη στιγμή και αξιολογεί τη διαφορά με το διάρκεια_από λειτουργεί πριν από την εκτύπωση της διαφοράς ώρας στην κονσόλα.

Serializing και Deserializing: Μετατροπή της ημερομηνίας και της ώρας JSON σε Rust Structs χρησιμοποιώντας Chrono

Η σειριοποίηση και η αποσειριοποίηση τιμών ημερομηνίας και ώρας από το JSON χρησιμοποιώντας Chrono και Serde είναι μια απλή διαδικασία. Αρχικά, προσθέστε το serde και serde_json κιβώτια στις εξαρτήσεις του έργου σας.

[εξαρτήσεις]
serde = { έκδοση = "1.0", χαρακτηριστικά = ["αντλώ"] }
serde_json = "1.0"

Στη συνέχεια, θα πρέπει να ορίσετε τον τύπο Rust και να το εφαρμόσετε #[παραγωγή (Serialize, Deserialize)] χαρακτηριστικά για τον τύπο στον οποίο θα καθορίσετε τον τύπο δεδομένων:

χρήση chrono::{DateTime, Utc};

#[παραγωγή (Serialize, Deserialize)]
structΣυνάντηση {
start_time: DateTime,
end_time: DateTime,
}

Μπορείτε να σειριοποιήσετε το Συνάντηση struct σε JSON με Serde παράλληλα με τις δυνατότητες μορφοποίησης του Chrono.

Δείτε πώς μπορείτε να μετατρέψετε μια παρουσία του Συνάντηση πληκτρολογήστε σε JSON:

χρήση serde_json:: to_string;

στκύριος() {
αφήνω συνάντηση = Συνάντηση {
start_time: Utc:: now(),
end_time: Utc:: now(),
};

αφήνω json = to_string(&meeting).unwrap();
println!("{}", json);
}

ο κύριος η συνάρτηση δημιουργεί α Συνάντηση παράδειγμα με το τρέχον UTC για τα πεδία πριν από τη χρήση του to_string λειτουργία για τη μετατροπή της παρουσίας δομής σε συμβολοσειρά JSON που εκτυπώνεται στην κονσόλα.

Μπορείτε εύκολα να αποσειροποιήσετε τα δεδομένα ημερομηνίας-ώρας JSON σε έναν τύπο δομής με το serde_json's από_στρ συνάρτηση που λαμβάνει μια συμβολοσειρά JSON και επιστρέφει μια παρουσία δομής.

χρήση serde_json:: from_str;

στκύριος() {
αφήνω json = r#"{"start_time": "2023-05-28T12:00:00Z", "end_time": "2023-05-28T14:00:00Z"}"#;

αφήνω συνάντηση: Συνάντηση = from_str (json).unwrap();
println!("{:#?}", συνάντηση)·
}

ο κύριος Η συνάρτηση αποσειριοποιεί τη συμβολοσειρά JSON από το json μεταβλητή στο συνάντηση παράδειγμα του Συνάντηση struct πριν από την εκτύπωση της παρουσίας struct στην κονσόλα.

Μπορείτε να δημιουργήσετε εξελιγμένες εφαρμογές με τη σκουριά

Η στιβαρότητα, η ευκολία χρήσης και η εκτεταμένη λειτουργικότητα του Chrono το καθιστούν απαραίτητο εργαλείο για τον χειρισμό των ημερομηνιών, των ωρών, της διάρκειας και των διαστημάτων των εφαρμογών σας. Μπορείτε να εξασφαλίσετε ακριβείς υπολογισμούς χρόνου, αποτελεσματικό προγραμματισμό και αξιόπιστες λειτουργίες που σχετίζονται με τις ημερομηνίες αξιοποιώντας τις δυνατότητες του Chrono.

Μια βασική περίπτωση χρήσης του Chrono είναι η κατασκευή εφαρμογών web. Μπορείτε να χρησιμοποιήσετε το Chrono για εγγραφές χρόνου δραστηριότητας, χρονομέτρηση δραστηριότητας χρήστη και άλλες λειτουργίες ιστού.