Chrono vise à fournir toutes les fonctionnalités nécessaires pour manipuler correctement les dates et heures selon le calendrier grégorien :
DateTime
est par défaut conscient des fuseaux horaires, tout en offrant des types indépendants du fuseau.Option
ou MappedLocalTime
.Local
fonctionne avec le fuseau actuel du système d'exploitation.Chrono-TZ
ou tzfile
pour un support complet.Chrono prend en charge divers environnements d'exécution et systèmes d'exploitation avec plusieurs fonctionnalités activables.
alloc
: Active les fonctionnalités nécessitant une allocation mémoire (principalement le formatage de chaînes).std
: Active les fonctionnalités dépendant de la bibliothèque standard. Étend alloc
avec l'interopérabilité des types standards.clock
: Permet de lire le fuseau local (Local
). Étend now
.now
: Active la lecture de l'heure système (now
).wasmbind
: Fournit une interface avec l'API JS Date pour les cibles wasm32.serde
: Active la sérialisation/désérialisation via serde.rkyv
: Obsolète, utilisez rkyv-*
.rkyv-16
, rkyv-32
, rkyv-64
: Active rkyv avec des entiers de 16, 32 ou 64 bits.rkyv-validation
: Active la validation rkyv avec bytecheck.arbitrary
: Permet de créer des instances arbitraires avec le crate Arbitrary.unstable-locales
: Active la localisation. Ajoute des méthodes suffixées par _localized
.Chrono fournit le type TimeDelta
pour représenter des durées. C'est une durée "exacte" en secondes et nanosecondes, sans composants "nominaux" comme les jours ou mois.
Anciennement nommé Duration
(toujours disponible comme alias), TimeDelta
se distingue de core::time::Duration
par sa nature signée.
Le type DateTime
représente une date et heure avec fuseau horaire.
DateTime
est conscient du fuseau et doit être construit depuis un objet TimeZone
, qui définit la conversion entre dates locales et UTC. Trois implémentations majeures existent :
Utc
pour le temps universel. Le plus efficace.Local
pour le fuseau système.FixedOffset
pour un décalage fixe arbitraire (ex: UTC+09:00).Les conversions entre fuseaux s'effectuent via DateTime::with_timezone
.
Obtenez l'heure actuelle avec Utc::now()
ou Local::now()
:
Créez aussi des dates/heures personnalisées :
Le formatage utilise la méthode format
avec une syntaxe similaire à strftime.
to_string
et {:?}
fournissent des représentations raisonnables. Les méthodes to_rfc2822
et to_rfc3339
couvrent les formats courants.
Le formatage localisé est disponible via unstable-locales
:
Deux méthodes d'analyse existent :
FromStr
(et parse
) pour les types DateTime<FixedOffset>
, DateTime<Utc>
et DateTime<Local>
.DateTime::parse_from_str
analyse avec décalage et renvoie DateTime<FixedOffset>
.Utilisez DateTime::from_timestamp(seconds, nanoseconds)
pour créer un DateTime<Utc>
depuis un timestamp UNIX.
DateTime.timestamp
extrait le timestamp (secondes), et DateTime.timestamp_subsec_nanos
les nanosecondes additionnelles.