Chrono zielt darauf ab, alle Funktionen bereitzustellen, die für korrekte Datums- und Zeitoperationen im gregorianischen Kalender benötigt werden:
DateTime
-Typ ist standardmäßig zeitzonenbewusst, bietet aber auch separate zeitzonenunabhängige Typen.Option
oder MappedLocalTime
zurück.Local
-Zeitzone kann mit der aktuellen Zeitzone des Betriebssystems arbeiten.Chrono-TZ
oder tzfile
für vollständige Zeitzonenunterstützung.Chrono unterstützt verschiedene Laufzeitumgebungen und Betriebssysteme und verfügt über mehrere aktivierbare oder deaktivierbare Funktionen.
alloc
: Aktiviert Funktionen, die von Speicherzuweisung abhängen (hauptsächlich String-Formatierung).std
: Aktiviert Funktionen, die von der Standardbibliothek abhängen. Dies ist eine Obermenge von alloc
und fügt Interoperabilität mit Standardbibliothekstypen und -merkmalen hinzu.clock
: Aktiviert Funktionen zum Lesen der lokalen Zeitzone (Local
). Dies ist eine Obermenge von now
.now
: Aktiviert Funktionen zum Lesen der Systemzeit (now
).wasmbind
: Bietet eine Schnittstelle zur JS Date API für wasm32-Ziele.serde
: Aktiviert Serialisierung/Deserialisierung über serde.rkyv
: Veraltet, verwenden Sie die rkyv-*
-Funktionen.rkyv-16
, rkyv-32
, rkyv-64
: Aktiviert Serialisierung/Deserialisierung über rkyv mit 16-Bit-, 32-Bit- oder 64-Bit-Ganzzahlen.rkyv-validation
: Aktiviert rkyv-Validierungsunterstützung mit bytecheck.arbitrary
: Konstruiert beliebige Instanzen von Typen mit dem Arbitrary-Crate.unstable-locales
: Aktiviert Lokalisierung. Dies fügt verschiedene Methoden mit dem Suffix _localized
hinzu.Chrono bietet den TimeDelta
-Typ zur Darstellung von Zeitspannen. Dies ist eine "exakte" Dauer, ausgedrückt in Sekunden und Nanosekunden, und stellt keine "nominalen" Komponenten wie Tage oder Monate dar.
Der TimeDelta
-Typ hieß früher Duration
(steht weiterhin als Typalias zur Verfügung). Ein wesentlicher Unterschied zu ähnlichen Typen wie core::time::Duration
ist, dass es sich um einen vorzeichenbehafteten Wert handelt.
Chrono bietet den DateTime
-Typ zur Darstellung von Datum und Zeit in einer Zeitzone.
DateTime
ist zeitzonenbewusst und muss aus einem TimeZone
-Objekt konstruiert werden, das definiert, wie lokale Daten in UTC-Daten umgewandelt werden und umgekehrt. Es gibt drei bekannte TimeZone
-Implementierungen:
Utc
gibt die UTC-Zeitzone an. Sie ist am effizientesten.Local
gibt die lokale Zeitzone des Systems an.FixedOffset
gibt eine beliebige feste Zeitzone an, wie UTC+09:00 oder UTC-10:30.DateTime
-Werte verschiedener TimeZone
-Typen sind unterschiedlich und können nicht gemischt werden, können aber mit der Methode DateTime::with_timezone
ineinander umgewandelt werden.
Sie können das aktuelle Datum und die aktuelle Zeit in der UTC-Zeitzone (Utc::now()
) oder in der lokalen Zeitzone (Local::now()
) abrufen.
Darüber hinaus können Sie auch eigene Datums- und Zeitangaben erstellen:
Die Formatierung erfolgt über die format
-Methode, deren Format der bekannten strftime-Formatierung entspricht.
Die Standardmethode to_string
und der {:?}
-Bezeichner bieten ebenfalls eine sinnvolle Darstellung. Chrono bietet außerdem die Methoden to_rfc2822
und to_rfc3339
für gängige Formate.
Chrono bietet jetzt auch die Möglichkeit, Datumsangaben in fast jeder Sprache zu formatieren, ohne zusätzliche C-Bibliotheken. Diese Funktion ist unter dem Feature unstable-locales
verfügbar:
Das Parsen kann auf zwei Arten erfolgen:
FromStr
(und die parse
-Methode auf Strings) kann zum Parsen von DateTime<FixedOffset>
, DateTime<Utc>
und DateTime<Local>
-Werten verwendet werden.DateTime::parse_from_str
parst Datum und Zeit mit einem Offset und gibt DateTime<FixedOffset>
zurück.Verwenden Sie DateTime::from_timestamp(seconds, nanoseconds)
, um aus einem UNIX-Zeitstempel ein DateTime<Utc>
zu erstellen.
Verwenden Sie DateTime.timestamp
, um den Zeitstempel (in Sekunden) aus einem DateTime
zu erhalten. Zusätzlich können Sie mit DateTime.timestamp_subsec_nanos
die zusätzliche Nanosekundenzahl abrufen.