2011-02-18 106 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

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