如何在没有前导零的情况下从time :: strftime打印日期/时间?

时间:2016-07-05 20:15:14

标签: time rust strftime

如何在没有前导零的情况下打印日期/时间?例如,Jul 5, 9:15

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

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

导致错误:

  

线程''对Result::unwrap()Err上的%l感到恐慌:InvalidFormatSpecifier(' - ')',.. / src / libcore / result.rs:746

我怀疑Rust不支持提供此标志的glibc扩展(以及其他几个);但是没有前缀日期/时间的语法;替代(if(!($stmt = $this->conn->prepare("INSERT INTO mytable (myfield) VALUES (IFNULL(?,DEFAULT(myfield)))"))){ throw new Exception("Prepare failed: (" . $this->conn->errno . ") " . $this->conn->error); } if(!($stmt->bind_param("s",$myfield))) { //$myfield is a variable that can be null, if so the default value for such field will be inserted throw new Exception("Bind_param failed: (" . $this->conn->errno . ") " . $this->conn->error); } if(!$stmt->execute()) { throw new Exception("Execute failed: (" . $stmt->errno . ") " . $stmt->error); } )只是前缀空格,同样没用。

我可以手工创建字符串,但这会破坏函数的用途。

1 个答案:

答案 0 :(得分:8)

查看the code,我们可以确认time包不支持标记-。另请注意,time crate位于rust-lang-deprecated用户,因此不推荐使用。

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

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