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

时间:2011-11-21 03:05:21

标签: c# .net datetime

  

可能重复:
  Convert string to DateTime in c#

一个问题

我得到了一个实际上来自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(),我收到无法进行转换的错误。我怎么能这样做?

1 个答案:

答案 0 :(得分:126)

必须使用DateTime.TryParseExact

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

OR

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

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