Time 格式std::时间输出

Time 格式std::时间输出,time,rust,Time,Rust,我想以某种格式显示当前时间 我正试图避免,因为它在其上被标记为已弃用 我想使用这个精确的格式time::now().strftime(“%Y-%m-%d][%H:%m:%S”).unwrap()使用std::time,但它似乎没有strftime,您可以使用板条箱来实现相同的结果: extern crate chrono; use chrono::Local; fn main() { let date = Local::now(); println!("{}", date.f

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

我正试图避免,因为它在其上被标记为已弃用

我想使用这个精确的格式
time::now().strftime(“%Y-%m-%d][%H:%m:%S”).unwrap()
使用
std::time
,但它似乎没有
strftime

,您可以使用板条箱来实现相同的结果:

extern crate chrono;

use chrono::Local;

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

时间板条箱未弃用:未维护

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

目前有两种
now
方法:和

Instant
表示:

对单调递增时钟的一种测量。不透明,仅在持续时间
时有用

SystemTime
表示:

系统时钟的一种度量,用于与文件系统或其他进程等外部实体进行通信

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

正如其他地方提到的,我建议使用
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));
}

注(引用文件页):

时间的格式化行为基于C中的strftime,但它显式地不兼容。说明符可能丢失、添加或具有与C中不同的行为


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

是否有办法将
std::time::now()
的结果转换为与时间兼容的类型?OP询问如何格式化
std::time
中的内容,而不是如何打印当前时间(无论好坏).另外,板条箱chrono只是板条箱时间的包装。@Bl4ckb0ne该chrono板条箱已在12天前更新。我不相信它已被弃用。@antoyo:在回购协议中[,上一次更新是在5个月前。另外,由于所有代码都已迁移到rust std,所以它已被标记为已折旧lib@antoyo另外,我可以向您推荐这一点。我只是不想在我的项目中添加更多的依赖项。因为现在有人看到这一点,
time
板条箱可能很快就会恢复。我已经在GitHub上请求将其保存下来呃,已经得到了两位撰稿人的支持。