Soru YYYYMMDD string tarihini bir datetime değerine dönüştürün [duplicate]


Olası Kopyalama:
Dize DateTime için dize dönüştürme 

Bir soru

Aslında DirectoryInfo gelen bir dize değeri var. Yapmak istediğim, karşılaştırma yapmak için dize değerini bir tarih değerine dönüştürmektir.

Klasör adı bu C gibi örnek: \ FOLD \ 20111120 ve düzgün bir başka klasör yolu böyle C: \ KATLAMA \ 20111021

20111120 aslında bir tarih formatıdır. Ben tüm dizini silerek veya değil bazı karşılaştırma yapmaya karar vermek için tarih biçimine dönüştürmeye çalışıyorum.

Sanırım kodumu buraya yapıştırırım

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 () ile denedim ve converstion.How yapamıyorum hata alıyorum.Bunu bununla yapabilir miyim?


44
2017-11-21 03:05


Menşei


Bu teknik olarak bir kopya olabilir, ancak ihtiyaç duyduğum şey daha açık. +1 - Booji Boy


Cevaplar:


Malısın zorunda kullanım DateTime.TryParseExact.

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

VEYA

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

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

117
2017-11-21 03:07



+1, ancak yalnızca tek bir biçim dizesiyle bir diziyi geçirmeniz gerekmez TryParseExact: msdn.microsoft.com/en-us/library/ms131044.aspx - LukeH