2011-02-18 104 views
1
string filename = DateTime.Today.ToString() + ".csv"; 
    if(!File.Exists(filename)) 
     File.Create(filename); 

我认为这将工作,但它会抛出'格式不支持'的错误。我只想要在我的.exe目录中创建一个csv如何根据日期创建文件?

回答

3

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

你可以,但是,这样做:DateTime.Now.ToString("yyyyMMdd")

5

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

您可能想要使用格式字符串来控制生成的文件名。例如

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

冒号和斜杠都是无效字符。 – xcud 2011-02-18 21:25:09

+0

不冒号选择一个备用的NTFS流? – 2011-02-18 21:26:37

0

您的日期有斜线的话,试试这个,而不是

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

我猜你的语言环境有//:(或类似的混乱字符)在日期格式。您应指定一个明确的格式 - "yyyy MM dd"例如:

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

大家都已经指出的那样,默认则DateTime.ToString()的格式无效字符它(几乎任何区域设置),让

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

产生一个像2/18/2011 4:26:48 PM.csv“文件名” - 如果你想要一个基于日期时间命名这是无效的

,尝试

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

要达到这样的2011021804254.csv

您可以添加更多的格式,只是只要它不包含任何以下内容:\/: * ? " < > |