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

如何按PC当前日期时间格式创建目录?解决C# FormatException报错

异常原因

string.Format 要求格式串内{n}形式的占位符,索引n必须大于等于0、小于传入参数的总个数。
你定义的格式串"{0} on {1} At {2}"包含3个占位符,需要传入3个匹配参数,但你删除textBox1.Text后仅传入date、time2个参数,最高位占位符{2}无对应参数值,因此触发该FormatException。
另外原代码直接用字符串拼接路径存在兼容问题:如果传入的根路径Folder末尾没有带\分隔符,会直接把根路径和文件夹名连为一体,导致目录创建位置错误。

修复方案

固定格式实现(匹配你注释里的示例命名规则)

如果不需要原参考代码里的文本框输入前缀,只需要生成星期 月.日.年 At 时.分 上午/下午格式的文件夹名,调整格式串占位符数量、改用官方路径拼接方法即可,完整代码如下:

using System.IO;

private void CreateDir(string Folder)
{
    // 命名示例:Sun 01.12.2014 At 09.13 AM
    string date = DateTime.Now.ToString("ddd MM.dd.yyyy");
    string time = DateTime.Now.ToString("HH.mm tt");
    // 占位符数量调整为2个,和传入参数匹配
    string folderName = string.Format("{0} At {1}", date, time);
    // 自动处理路径分隔符,避免拼接错误
    string fullDirPath = Path.Combine(Folder, folderName);
    Directory.CreateDirectory(fullDirPath);
}

如果需要保留原格式里的on连接段,直接把固定前缀加到格式串里即可,比如要加固定前缀Backup,对应行改为:

string folderName = string.Format("Backup on {0} At {1}", date, time);

跟随PC系统日期时间格式实现

如果需要完全匹配当前PC的系统默认日期时间格式,直接使用系统内置格式生成即可,注意替换文件名非法字符:

using System.IO;

private void CreateDir(string Folder)
{
    // 命名规则完全跟随当前系统区域设置的短日期+长时间格式
    // 替换冒号是因为Windows文件夹名不允许包含:字符
    string folderName = DateTime.Now.ToString("G").Replace(":", ".");
    string fullDirPath = Path.Combine(Folder, folderName);
    Directory.CreateDirectory(fullDirPath);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:51:38