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上请求将其保存下来呃,已经得到了两位撰稿人的支持。