2

我有一个问题,我确信它很简单,但它在我的代码中不起作用。我正在创建一个日志文件,我想将日期连接到文件名,以便他们知道日志的生成时间。我的 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 中的文件名不能包含 \ 字符。任何想法为什么替换方法不起作用?

谢谢。

4

4 回答 4

7

它正在工作,但您没有存储结果。它需要阅读

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

但这只是一个糟糕解决方案的补丁。为什么不首先以正确的方式做呢?请改用DateTime.ToString定义格式字符串。例如:

string DateNow = System.DateTime.Now.ToString("yyyy-MM-dd"); // or any other format
于 2012-09-27T11:44:33.713 回答
2

您已经使用 @ 符号转义了反斜杠,因此替换函数正在寻找“\\”,而不是“\”。要使您的代码正常工作,请将其更改为:

DateNow = DateNow.Replace(@"\", "-");
于 2012-09-27T11:46:14.777 回答
0

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

DateTime日期与时间

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

Date

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

输出

2012 年 9 月 27 日下午 5:20:12

于 2012-09-27T11:51:30.143 回答
0

无事可做splitconvert ToString()

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

说明yyyy-MM-dd你也写yyyy/MM/dd

检查此链接以获取更多日期格式

于 2012-09-27T11:53:04.573 回答