2011-11-21 39 views
40

thể trùng lặp:
Convert string to DateTime in c#Chuyển đổi chuỗi YYYYMMDD ngày đến một giá trị datetime

Một câu hỏi

tôi nhận được một chuỗi giá trị mà thực sự nhận được từ DirectoryInfo. Điều tôi muốn thực hiện là chuyển đổi giá trị chuỗi thành giá trị ngày để so sánh.

Tên thư mục là mẫu như C này: \ Fold \ 20.111.120 và đúng một đường dẫn thư mục là như C này: \ Fold \ 20111021

20111120 thực sự là một định dạng ngày tháng. Tôi đang cố gắng chuyển đổi nó thành định dạng ngày để thực hiện một số so sánh quyết định xóa toàn bộ thư mục hay không.

Tôi nghĩ rằng tôi sẽ dán mã của tôi ở đây

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()); 
} 

Tôi đã thử với Convert.toDatetime() và tôi nhận được lỗi mà không thể làm converstion.How tôi có thể làm như vậy với điều này?

+1

này techically có thể là một bản sao, nhưng nó rõ ràng hơn những gì tôi cần. +1 –

Trả lời

108

Bạn nên phải sử dụng DateTime.TryParseExact.

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

HOẶC

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

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

+1, nhưng bạn không cần phải chuyển mảng nếu bạn chỉ sử dụng một chuỗi định dạng duy nhất với 'TryParseExact': http://msdn.microsoft.com/en-us/library/ms131044.aspx – LukeH

Các vấn đề liên quan