【问题标题】:How can I print a date/time from time::strftime without leading zeros?如何从 time::strftime 打印日期/时间而不使用前导零?
【发布时间】:2016-07-05 20:15:14
【问题描述】:

如何打印不带前导零的日期/时间?例如,Jul 5, 9:15

根据docs,它使用与strftime 相同的语法,但抑制了前导零

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

导致错误:

线程“在Err 值上调用Result::unwrap() 时惊慌失措:InvalidFormatSpecifier('-')', ../src/libcore/result.rs:746

我怀疑 Rust 不支持提供此标志(以及其他几个)的 glibc 扩展;但是没有无前缀日期/时间的语法;替代方案 (%l) 只是以空格作为前缀,这同样没用。

我可以手动创建字符串,但这违背了函数的目的。

【问题讨论】:

标签: time rust strftime


【解决方案1】:

查看the code,我们可以确认time crate 不支持标志-。另请注意,time crate 位于rust-lang-deprecated 用户上,因此已被弃用。


也就是说,我建议您使用chrono crate。除了支持您想要的格式说明符之外,chrono crate 还支持时区等等。

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

【讨论】:

  • 我在使用此代码时收到“在chrono 中找不到UTC”。有什么建议吗?
  • 想通了,UTC 实际上是Utc
猜你喜欢
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2018-09-25
  • 2018-09-15
相关资源
最近更新 更多