Как я могу напечатать дату / время из time:: strftime без ведущих нулей?

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

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

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

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

нить "запаниковал" называется Result::unwrap() на Err значение: InvalidFormatSpecifier (' -')', ../src/libcore/result.rs: 746

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

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

1 ответов


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


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

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