我有下面的代码来记录消息。由于我想要为每个date
设置日志,因此我尝试检索当前date
,然后尝试使用格式为path/dd_mm_yyyy_LogFile.txt
的特定日期创建日志文件。在此之前,我必须在没有时间的情况下检索当前的date
。
StreamWrite sw=null;
var d = Convert.ToString(DateTime.Today.ToShortDateString());
var date = DateTime.ParseExact(d, "dd_MM_yyyy", CultureInfo.InvariantCulture);
//Error in the above line
sw = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "\\" + d + "_LogFile.txt", true);
sw.WriteLine(DateTime.Now.ToString() + ": " + message);
但是字符串未被识别为有效的DateTime 。我关注了许多其他帖子,例如将"dd_MM_yyyy"
更改为"dd-MM-yyy"
或更改为"d-m-yyyy"
,但遗憾的是我仍然遇到同样的错误。还有什么在这里缺少?下面的截图供参考。如果您看到屏幕截图,我会获取正确的d
值。但仍然是上述例外。
答案 0 :(得分:3)
正如我从图片中看到的那样,您实际上需要"M/d/yyyy"
格式:
String d = @"2/26/2016"; // d's value has been taken from the screenshot
DateTime date = DateTime.ParseExact(d, "M/d/yyyy", CultureInfo.InvariantCulture);
答案 1 :(得分:1)
Parse方法中的格式字符串应与ToShortDateString
生成的格式字符串完全匹配。例如这适用于我:
var d = Convert.ToString(DateTime.Today.ToShortDateString());
Console.WriteLine(d);
var date = DateTime.ParseExact(d, @"MM/dd/yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(date);
输出:
02/26/2016
02/26/2016 00:00:00
答案 2 :(得分:1)
查看您发布的屏幕截图。字符串的运行时值为:
"2/26/2016"
因此格式字符串应为:
"M/dd/yyyy"
或:
"MM/dd/yyyy"
通过使用其他格式字符串,您明确告诉系统使用 exact 格式。并且您拥有的字符串与该格式不匹配。因此错误。
答案 3 :(得分:1)
改为创建d
:
var d = DateTime.Today.ToString("dd_MM_yyyy");
ToShortDateString()
没有您想要的格式。