2014-02-11 65 views
0

嘗試在文件寫入時將日期包含到文件名中。將今天的日期保存到文件名

DateTime todaysDate = DateTime.Now; 
string destFile = System.IO.Path.Combine(targetPath + todaysDate.ToShortDateString() + ".dat"); 

錯誤:

Could not find a part of the path 'C:\Users\John\Desktop\Sales\Import11/02/2014.dat'. 

可以更改日期相隔_?或任何其他建議來解決這個問題? 鉭

回答

4

這是最好的格式,其中你知道它會不會與文件路徑衝突的方式,日期,下劃線_或全部-或沒有分隔更好的選擇

string destFile = Path.Combine(targetPath, 
    String.Format("{0}.dat", todaysDate.ToString("dd-MM-yyyy"))); 
+0

一般來說,yyyy-MM-dd比dd-MM-yyyy好,因爲它自然可以排序。 –

+0

您應該使用yyyy-MM-dd,因爲您將能夠按正確的順序對文件進行排序。 –

+0

好點的傢伙,但是,這不是問題... – James

0

嘗試使用其他分隔符,如下劃線_

todaysDate.ToString("dd_MM_yyyy_HH_mm_ss");

/不是一個文件路徑的有效字符。您可以使用各種其他字符,只要它們對於文件路徑不是非法的。

此MSDN參考應該有所幫助。

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

0

使用此:

DateTime todaysDate = DateTime.Now; 
string destFile = string.Format("{0}{1:yyyy_MM_dd}.dat" , targetPath, todaysDate); 
0

你可以試試這個:

var title = String.Format("NameOfYOuWant {0}.log", DateTime.Today.ToShortDateString().Replace('/', '-')) 
+2

這是不安全的方式來做到這一點,因爲它仍然取決於當前的文化設置。 –

0

我建議:

  • 使用排序的日期格式,只是因爲這是ñ令人愉悅的
  • 明確指定不變的文化,以避免使用不同的日曆系統結束的怪異。 (我懷疑你總是希望使用的公曆)
  • 顯式指定分隔符,其不會引起文件系統路徑問題(這/:做)

因此,像:

string name = string.Format(CultureInfo.InvariantCulture, 
          "Import-{0:yyyy-MM-dd}.dat", 
          DateTime.Today); 

// Assuming that targetPath is the directory; it's slightly unclear. 
string path = Path.Combine(targetPath, name); 

注:

  • 通過使用Today,您正在使用系統本地時區。這可能是你想要的,但你需要明確地考慮它。
  • 你只使用日期,而不是日期和時間 - 是絕對好嗎?你會不會需要在同一天處理多個進口?