You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DateTime::format()生成的名称创建文件/目录?

Rust中使用chrono生成格式化目录名的问题解决

问题分析

你遇到的错误核心在于:chrono::DateTime.format()返回的是**DelayedFormat<StrftimeItems<'_>>**类型,这是一个延迟格式化的结构体,并未实现AsRef<Path> trait,而fs::create_dir()要求参数必须满足这个trait约束。

解决方案

只需要将延迟格式化的结果转换为String类型即可——因为String天然实现了AsRef<Path>,可以直接作为create_dir()的参数。

修改后的代码如下:

use std::fs;
use chrono;

fn main() {
    let now = chrono::offset::Local::now();
    // 调用.to_string()将延迟格式化结果转为String
    let custom_datetime_format = now.format("%Y%m%d_%H%M%S").to_string();
    println!("{}", custom_datetime_format);

    // 现在可以直接传入create_dir
    fs::create_dir(&custom_datetime_format).unwrap(); 
    println!("New directory created: {}", custom_datetime_format);
}

补充说明

  • 注意你原格式字符串里的%Y%m%y,%y是两位数年份,%Y是四位数年份,通常推荐用%Y%m%d(四位数年+月+日)避免歧义。
  • fs::create_dir()的返回值是io::Result<()>,成功时返回空元组(),所以不需要用变量接收后打印详细结构,直接打印目录名更有意义。
  • 也可以用to_owned()替代to_string(),两者效果一致,都是生成拥有所有权的String实例。

内容的提问来源于stack exchange,提问作者WebOrCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:50:45