2016-07-05 48 views
6

Come posso stampare una data/ora senza zeri iniziali? Ad esempio, Jul 5, 9:15.Come posso stampare una data/ora dal momento :: strftime senza zeri iniziali?

Secondo la docs che utilizza la stessa sintassi strftime, tuttavia soppressione zeri

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

porta ad un errore:

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

Sospetto ruggine non supporta le estensioni glibc che fornire questa bandiera (e molti altri); tuttavia non esiste una sintassi per data/ora non prefissata; l'alternativa (%l) è solo un prefisso con uno spazio vuoto altrettanto inutile.

Potrei creare la stringa a mano, ma ciò vanifica lo scopo della funzione.

+0

penso che il [cassa crono] (https://lifthrasiir.github.io/rust-chrono/chrono/format/strftime/index.html) ha il supporto per questo identificatore. – squiguy

risposta

8

Alla ricerca the code possiamo confermare che la casella time non supporta la bandiera -. Si noti inoltre che la casella time è sull'utente rust-lang-deprecated, quindi è deprecata.


Detto questo, vi consiglio di utilizzare il chrono cassa. Oltre a supportare gli specificatori di formato che desideri, la crono ha anche il supporto per i fusi orari e molto altro.

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