Chuyển đổi chuỗi thành một ngày theo dạng .net


8

Tôi đang đọc văn bản từ tệp phẳng trong C# và cần kiểm tra xem các giá trị nhất định có phải là ngày hay không. Chúng có thể ở định dạng YYYYMMDD hoặc định dạng MM/DD/YY. Cách đơn giản nhất để làm điều này trong .Net là gì?

26
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
var Result = DateTime.ParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None); 

hoặc

DateTime result; 
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
DateTime.TryParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result); 

Thông tin thêm trong tài liệu MSDN trên ParseExactTryParseExact.

  0

Điều này tốt hơn tôi. Không biết bạn có thể làm một mảng chuỗi cho các định dạng. Rất đẹp! 23 sep. 082008-09-23 19:42:00

  0

Thậm chí tốt hơn! Đúng thứ tôi cần. 23 sep. 082008-09-23 19:57:04

  0

Hãy chắc chắn rằng bạn kiểm tra giá trị trả về của DateTime.TryParseExact (...) vì đó sẽ là cách duy nhất bạn có thể biết nó có thành công hay không. 24 sep. 082008-09-24 00:11:22


3

DateTime.TryParse phương pháp

  0

Vì tôi không thể chỉnh sửa câu trả lời của bạn, tôi nghĩ rằng nó có thể giúp cung cấp liên kết đến bài viết MSDN cho phương pháp đó. http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx 23 sep. 082008-09-23 19:39:50

  0

[@Yadyn]: tôi đã tìm thấy sự intellisense sẽ là đủ, nhưng ok tôi đã thêm liên kết để được toàn diện - cảm ơn! 25 sep. 082008-09-25 18:38:24


0

Bạn cũng có thể làm Convert.ToDateTime

không chắc chắn những lợi thế của một trong hai


0

Sử dụng TryParse sẽ không ném một ngoại lệ nếu nó không thành công. Ngoài ra, TryParse sẽ trả về True/False, cho biết thành công của chuyển đổi.

Kính trọng ...


3

bạn cũng có thể thử TryParseExact để đặt định dạng chính xác. Phương pháp , đây là tài liệu: http://msdn.microsoft.com/en-us/library/ms131044.aspx

ví dụ:

DateTime outDt; 
bool blnYYYMMDD = 
    DateTime.TryParseExact(yourString,"yyyyMMdd" 
          ,CultureInfo.CurrentCulture,DateTimeStyles.None 
          , out outDt); 

Tôi hy vọng tôi sẽ giúp bạn.

  0

Dude! Điều đó rất hữu ích, tôi mất gần một giờ đồng hồ, mặc dù tôi biết tôi đã làm nó trước một nơi nào đó. 31 mar. 092009-03-31 08:46:31


0

Bạn có thể sử dụng phương pháp TryParse để kiểm tra tính hợp lệ và phân tích cú pháp cùng một lúc.

DateTime output; 
string input = "09/23/2008"; 
if (DateTime.TryParseExact(input,"MM/dd/yy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output) || DateTime.TryParseExact(input,"yyyyMMdd", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output)) 
{ 
    //handle valid date 
} 
else 
{ 
    //handle invalid date 
}