2016-07-05 4 views
6

Comment est-ce que je peux imprimer une date/heure sans diriger des zéros? Par exemple, Jul 5, 9:15.Comment puis-je imprimer une date/heure à partir de time :: strftime sans les zéros en tête?

Selon le docs il utilise la même syntaxe que strftime, mais la suppression des zéros non significatifs

time::strftime("%b %-d, %-I:%M", &time::now()).unwrap() 

conduit à une erreur:

thread '' panicked at 'called Result::unwrap() on an Err value: InvalidFormatSpecifier('-')', ../src/libcore/result.rs:746

Je soupçonne que la rouille ne supporte pas les extensions de glibc fournir ce drapeau (et plusieurs autres); cependant, il n'y a pas de syntaxe pour la date/heure non préfixée; l'alternative (%l) vient juste de préfixer avec un espace vide qui est également inutile.

Je pourrais créer la chaîne à la main, mais cela va à l'encontre de l'objectif de la fonction.

+0

Je pense que la [caisse chrono] (https://lifthrasiir.github.io/rust-chrono/chrono/format/strftime/index.html) a le soutien pour cette spécificateur. – squiguy

Répondre

8

En regardant the code nous pouvons confirmer que time caisse ne supporte pas le drapeau -. Notez également que time caisse est sur rust-lang-deprecated utilisateur, donc il est obsolète.


Cela dit, je vous recommande d'utiliser la caisse chrono. En plus de soutenir les spécificateurs de format que vous voulez, le chrono crate a également un support pour les fuseaux horaires et bien plus encore.

let now = chrono::UTC::now(); 
println!("{}", now.format("%b %-d, %-I:%M").to_string());