我想问一个简单的问题,但我遇到了一个问题。 我想得到程序执行的时间
Console.WriteLine(DateTime.Now);
我想输出.log文件,文件名将有程序执行时间
String path2 = "C:\\temp"+DateTime.Now+".log";
StreamWriter path = File.CreateText(path2);
path.WriteLine(DateTime.Now);
但它告诉我路径格式是非法的。
我想问另一个问题
string a12 = aaa.Element("a12").tostring();
String path2 = "C:\\temp" + a12.ToString + ".log";
但它告诉我“路径格式是非法的”
我该如何解决?
由于
答案 0 :(得分:2)
因为DateTime.Now默认转换为字符串包含时间信息(例如8:53)。分号在路径名中是非法的。
如果您的日期仅在文件名中,则可以使用:
String path2 = "C:\\temp" + DateTime.Now.ToString("d") + ".log";
(编辑)对于某些文化,这仍然会导致无效值,正如其他人指出的那样,最好使用显式格式化程序:
String path2 = "C:\\temp" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
答案 1 :(得分:1)
您希望在“”引用的字符串中转义\,并且DateTime.Now的结果中也有不能在路径中的字符。你也需要逃脱/替换它们。
答案 2 :(得分:1)
当您将DateTime.Now
放入路径时,您可能会冒险添加不具有路径的字符(例如:
分隔符。这就是您收到此错误消息的原因。< / p>
您可以将其替换为.
:
string path2 = Path.Combine
( @"C:\temp\"
, DateTime.Now.ToString("yyyy-MM-dd.HH24.mm.ss")
, ".log"
);
答案 3 :(得分:1)
DateTime.Now可能包含非法字符,具体取决于您的本地系统设置。要获得与安装系统的文化无关的有效且一致的文件名,您应该手动创建日志文件名,例如:
String path2 = "C:\\temp" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log";
答案 4 :(得分:1)
String path2 = String.Format("C:\\temp{0}.log", DateTime.Now.ToString("yyyyMMdd"));
由于filename不能使用由DateTime.Now.ToString(“d”)创建的“/”,因此会产生问题。