2012-09-27 108 views
2

我有一個問題,我相信它很簡單,但它不工作在我的代碼。我正在創建一個日誌文件,我想將日期連接到文件名,以便他們知道何時生成日誌。我的string.replace不會從我的日期中刪除「\」,我已經轉換爲字符串。String.replace消除反斜槓

見下面的代碼:

 string DateNow = Convert.ToString(System.DateTime.Now); 
     DateNow = DateNow.Substring(0, 10); 
     DateNow.Replace(@"\\", "-"); 

     string FileName = "log" + DateNow + ".txt"; 

     // Write values to textfile and save to Log folder 
     using (StreamWriter sw = new StreamWriter(HttpContext.Current.Server.MapPath("~/Log" + FileName))) 
     { 
      sw.WriteLine(System.DateTime.Now); 
      sw.WriteLine("New user created"); 
      sw.WriteLine("Username is: " + username); 
      sw.WriteLine("Password is: " + password); 
      sw.WriteLine("Company is: " + company); 
      sw.WriteLine("Email is: " + email); 
      sw.Dispose(); 
      sw.Close(); 
     } 

這將拋出一個異常,因爲在Windows文件名不能包含\字符。任何想法爲什麼替換方法不起作用?

謝謝。

+2

System.DateTime.Now.ToString('MM-dd-yyyy'); – Sender

回答

7

它的工作,但你沒有存儲的結果。它需要閱讀

DateNow = DateNow.Replace(@"\", "-"); 

但這只是一個不好的解決方案的補丁。爲什麼不以正確的方式做到這一點呢?改用DateTime.ToString代替custom format string。例如:

string DateNow = System.DateTime.Now.ToString("yyyy-MM-dd"); // or any other format 
+0

謝謝。我沒有想到使用Now.ToString(「yyyy-MM-dd」)作爲設置日期格式的一種方式。 –

+1

我已經將此標記爲正確答案,因爲Jon在使用自定義格式方面做得很好,而不是使用替換來刪除char。 –

2

你已經逃出使用@符號反斜槓,所以替換功能正在尋找「\\」,而不是「\」。爲了使你的代碼的工作,將其更改爲:

DateNow = DateNow.Replace(@"\", "-"); 
0

直接System.DateTime.Now.Date.ToString('MM-dd-yyyy');

OR DateTime日期隨着時間

string newDate = DateTime.Now.ToString().Replace('/','-'); 

Date只有

string newDate = DateTime.Now.Date.ToString().Replace('/','-'); 

出把

2012年9月27日下午5時20分十二秒

0

無關splitconvert ToString()

string DateNow = System.DateTime.Now.ToString("yyyy-MM-dd"); 

insted的yyyy-MM-dd你也寫yyyy/MM/dd

查看此鏈接瞭解更多日期格式Dateformate