格式化std :: time输出

时间:2016-08-15 15:05:41

标签: time rust

我想以某种格式显示当前时间。

我试图避开time crate,因为它在the GitHub repo上被标记为已弃用。

我想使用time::now().strftime("%Y-%m-%d][%H:%M:%S").unwrap()使用std::time格式strftime,但似乎没有text = '{"section": "\main" }'

3 个答案:

答案 0 :(得分:12)

您可以使用包chrono来获得相同的结果:

extern crate chrono;

use chrono::Local;

fn main() {
    let date = Local::now();
    println!("{}", date.format("%Y-%m-%d][%H:%M:%S"));
}

修改

时间包不被弃用:它没有被维护。

此外,无法仅使用标准库格式化时间。

答案 1 :(得分:4)

目前有两种Vector3 myTransform = new Vector3(33,12,0); 方法:Instant::nowSystemTime::now

now说:

  

单调增加时钟的测量。不透明且仅对Instant有用。

Duration说:

  

系统时钟的测量,可用于与外部实体(如文件系统或其他进程)进行通信。

这些都不适合向人类展示。时间格式时间是额外的复杂性。它不是标准库的一部分真的是一件好事,否则就会有一个无法改进的固定API。

正如其他地方所述,我建议使用chrono继承人明显SystemTime包。

答案 2 :(得分:1)

由于 time 板条箱似乎复活了,您不再需要避免使用它。话虽如此,除了 std::time 板条箱的类似 time 的格式化功能之外,您还可以继续使用 strftime(这实际上是 time 板条箱所做的) .

use time::OffsetDateTime;
use std::time::SystemTime;

const DATE_FORMAT_STR: &'static str = "%Y-%m-%d][%H:%M:%S";

fn main() {
    let dt: OffsetDateTime = SystemTime::now().into();
    let dt2 = OffsetDateTime::now_utc();  // Also uses std::time (v0.2.26)

    println!("{}", dt.format(DATE_FORMAT_STR));
    println!("{}", dt2.format(DATE_FORMAT_STR));
}

Play

注意(引用文档页面):

<块引用>

Time 的格式化行为基于 C 中的 strftime,尽管它明确兼容。说明符可能会丢失、添加或具有与 C 中不同的行为。

因此请务必检查 this(即表格)以确保您使用了正确的说明符。