将YYYYMMDD格式的字符串日期转换为日期时间值

68

可能是重复问题:
如何在C#中将字符串转换为DateTime

一个问题:

我得到了一个字符串值,实际上是从directoryInfo获取的。我想要实现的是将该字符串值转换为日期值以进行比较。

文件夹名称的格式类似于C:\FOLD\20111120,而另一个文件夹路径则像这样 C:\FOLD\20111021

20111120实际上是一个日期格式。我正在尝试将其转换为日期格式,以决定是否删除整个目录。

我认为我应该在这里粘贴我的代码

DirectoryInfo dir = new DirectoryInfo(_FolderPath);

foreach (DirectoryInfo f in dir.GetDirectories())
{
     String folderName = f.ToString();
     DateTime ConDt = Convert.ToDateTime(folderName);
     Console.WriteLine(ConDt);
     Console.WriteLine(ConDt.GetType());
   //Console.WriteLine(folderName.GetType());
   //Console.WriteLine(f.GetType());
}
我尝试使用Convert.toDatetime(),但是出现了无法进行转换的错误。如何才能做到这一点?

2
这可能在技术上是一个重复的问题,但更清楚地表达了我所需要的。+1 - Booji Boy
1个回答

179

你应该使用DateTime.TryParseExact

var newDate = DateTime.ParseExact("20111120", 
                                  "yyyyMMdd", 
                                   CultureInfo.InvariantCulture);

或者

string str = "20111021";
string[] format = {"yyyyMMdd"};
DateTime date;

if (DateTime.TryParseExact(str, 
                           format, 
                           System.Globalization.CultureInfo.InvariantCulture,
                           System.Globalization.DateTimeStyles.None, 
                           out date))
{
     //valid
}

15
如果你只是使用单个格式字符串与TryParseExact,那么你不需要传递数组:http://msdn.microsoft.com/en-us/library/ms131044.aspx。 - LukeH
只是一个快速提示,如果您需要支持多个日期格式,那么数组会非常有用: string[] format = {"yyyyMMdd", "yyyy-MM-dd"}; - dajo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接