如何根据日期创建文件?

时间:2011-02-18 21:20:54

标签: c# .net file

    string filename = DateTime.Today.ToString() + ".csv";
    if(!File.Exists(filename))
        File.Create(filename);

我认为这样可行,但它会抛出“格式不支持”错误。我只想在我的.exe

旁边的目录中创建一个csv

5 个答案:

答案 0 :(得分:5)

我认为问题是将DateTime转换为字符串会生成一个包含无效文件名字符的字符串,例如冒号(:),这会导致创建失败。

您可能希望使用格式字符串来控制生成的文件名。 e.g。

string filename = DateTime.Today.ToString("yyyy-MM-dd") + ".csv";

答案 1 :(得分:3)

这是因为DateTime.Today.ToString()包含斜杠,它们作为Windows文件名的一部分无效。

但是,您可以执行此操作:DateTime.Now.ToString("yyyyMMdd")

答案 2 :(得分:1)

我猜你的语言环境在日期格式中有/ / :(或类似的混淆字符)。您应该指定显式格式 - "yyyy MM dd",例如:

string filename = DateTime.Today.ToString("yyyy MM dd",
            CultureInfo.InvariantCulture) + ".csv";

答案 3 :(得分:1)

正如大家所指出的那样,默认的DateTime.ToString()格式化中包含无效字符(对于任何区域设置),所以

string filename = DateTime.Now.ToString() + ".csv";

生成'{1}}之类的'文件名' - 无效

如果您想要基于日期时间的名称,请尝试

2/18/2011 4:26:48 PM.csv

获得类似string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + ".csv";

的内容

您可以添加更多格式,只要它不包含以下任何格式:2011021804254.csv

答案 4 :(得分:0)

你的日期有斜线,试试这个

string filename = Datetime.Now.Ticks.ToString() + ".csv";