繁体   English   中英

使用DateTime.ParseExact时,字符串未被识别为有效的DateTime

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM