[英]String was not recognized as a valid DateTime on DateTime.ParseExact
[英]String was not recognized as a valid DateTime when using DateTime.ParseExact
我有下面的代码来记录消息。 由于我想获取每个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);
但是获取String未被识别为有效的DateTime 。 我关注了许多其他帖子,例如将"dd_MM_yyyy"
更改为"dd-MM-yyy"
或"dm-yyyy"
但不幸的是仍然遇到相同的错误。 这里还缺少什么? 下面的截图供参考。 如果您看到屏幕截图,则说明已获取适当的d
值。 但还是以上例外。
从图片中可以看到,您实际上需要"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);
您在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/26/2016"
因此,格式字符串应为:
"M/dd/yyyy"
要么:
"MM/dd/yyyy"
通过使用其他格式字符串,您可以明确地告诉系统使用该确切格式。 而且您的字符串与该格式不匹配。 因此,错误。
像这样创建d
:
var d = DateTime.Today.ToString("dd_MM_yyyy");
ToShortDateString()
没有所需的格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.