2016-07-05 4 views
6

Wie kann ich ein Datum/eine Uhrzeit ohne führende Nullen drucken? Zum Beispiel Jul 5, 9:15.Wie kann ich ein Datum/Uhrzeit von Zeit :: strftime ohne führende Nullen drucken?

Nach dem docs verwendet es die gleiche Syntax wie strftime jedoch Unterdrückung von führenden Nullen

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

führt zu einem Fehler:

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

Ich vermute, Rust nicht die glibc-Erweiterungen nicht unterstützt, die stelle diese Flagge (und einige andere) zur Verfügung; Es gibt jedoch keine Syntax für Datum/Uhrzeit ohne Präfix. Die Alternative (%l) setzt nur Leerstellen voran, die ebenfalls nutzlos sind.

Ich könnte die Zeichenfolge von Hand erstellen, aber das schlägt den Zweck der Funktion.

+0

Ich denke, die [chrono Kiste] (https://lifthrasiir.github.io/rust-chrono/chrono/format/strftime/index.html) Unterstützung für diesen Spezifizierer. – squiguy

Antwort

8

Mit Blick auf the code können wir bestätigen, dass time Kiste die Flagge - nicht unterstützt. Beachten Sie auch, dass time crate auf rust-lang-deprecated Benutzer ist, so dass es veraltet ist.


Das heißt, empfehle ich Ihnen die chrono Kiste verwenden. Zusätzlich zur Unterstützung der gewünschten Formatspezifizierer unterstützt die Chronokiste auch Zeitzonen und vieles mehr.

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