2016-02-26 80 views
0

我有下面的一段代码来记录消息。由于我想每个date都有日志,我尝试检索当前的date,然后尝试使用path/dd_mm_yyyy_LogFile.txt格式创建具有该特定日期的日志文件。在此之前,我必须无时间检索当前date使用DateTime.ParseExact时字符串未被识别为有效日期时间

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值。但仍然是上述例外。在Parse方法

enter image description here

+0

你试过'dd-MM-yyyy'吗? –

+3

如果字符串是“2/26/2016”,那么格式字符串是不是“MM/dd/yyyy”? – David

+0

你说“将”dd_MM_yyyy“更改为”dd-MM-yyy“或”dm-yyyy“” - 但屏幕截图的日期格式为“dd/MM/yyy”格式 – enkryptor

回答

1

这样,而不是创建d

var d = DateTime.Today.ToString("dd_MM_yyyy"); 

ToShortDateString()没有你想要的格式。

+0

那么这是一个很好的方法..也很容易..谢谢.. :) –

1

你的格式字符串应完全匹配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 
+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); 
+0

我得到了我正在做的错误...谢谢你.. :) –

1

看您发布的屏幕截图。字符串的运行时间值为:

"2/26/2016" 

所以格式化字符串应该是:

"M/dd/yyyy" 

或:

"MM/dd/yyyy" 

通过使用这些其他格式的字符串,你明确告诉该系统使用确切的格式。并且您拥有的字符串不符合该格式。因此错误。

+0

我得到了错误,我正在做...谢谢..: ) –

相关问题