2016-07-05 5 views
6

Как распечатать дату/время без начальных нулей? Например, Jul 5, 9:15.Как распечатать дату/время со времени :: strftime без начальных нулей?

Согласно docs он использует тот же синтаксис, что strftime, однако подавление ведущих нулей

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

приводит к ошибке:

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

Я подозреваю, Ржавчина не поддерживает расширения GLibC, что предоставить этот флаг (и несколько других); однако нет синтаксиса для дат/времени с префиксом; альтернатива (%l) просто префиксы с пустым пространством, которое в равной степени бесполезно.

Я мог бы создать строку вручную, но это побеждает цель функции.

+0

Я думаю, что [хроно обрешетка] (https://lifthrasiir.github.io/rust-chrono/chrono/format/strftime/index.html) имеет поддержку для этого спецификатора. – squiguy

ответ

8

Смотри the code Мы можем подтвердить, что time Ящик не поддерживает флаг -. Также обратите внимание, что ящик time находится на rust-lang-deprecated пользователя, поэтому он устарел.


Тем не менее, я рекомендую вам использовать chrono клеть. В дополнение к поддержке спецификаторов формата, которые вы хотите, ящик с хронорой также поддерживает часовые пояса и многое другое.

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