2009-10-16 13 views

cevap

11

Kendi try/catch bloklarını kullanmak yerine DateTime.TryParse yöntemini kullanın. Eğer datetime biçimi ne olacağını biliyorsanız

string text = "10/16/2009"; 
DateTime result; 

if (DateTime.TryParse(text, out result)) 
{ 
    // success, result holds converted value 
} 
else 
{ 
    // failed 
} 
+0

Teşekkür asla kullanmayın olacağını datetime ayrıştırma için kullanılacak. Faiz dışı, fark nedir? – John

+2

@John: Fark, TryParse'ın, verilen metnin başarısız olursa bir istisna atmak yerine, başarılı bir tarihe dönüştürülebildiğini belirtmek için bir boolean döndürecektir. Parse kullanarak bir FormatException atar, bu yüzden bir try/catch'u kullanmanız gerekir. –

+0

Diğer bir not olarak, 'Parse' yöntemini sağlayan tüm BCL türleri de bir' TryParse 'yöntemi sağlar. –

2

, ayrıca kullanabilirsiniz DateTime..::.TryParseExact Method

böyle 01.03.2009

olarak tarihleriyle kullanıldığında DateTime.TryParse sorunlara neden olabilir

01 Mar veya 03 Jan mı?

Dd MMM yyyy gibi bir şeyiniz olması için, bir metin kutusu dışında bir tarih seçicisi gibi bir metin kutusu kullanmanız veya metin kutusunu doğrulamanız önerilir. Çok nadiren bununla giderdin.

önceki cevaplara
1

Küçük bir ek:

DateTime:

public static DateTime Parse(string s) 
{ 
    return DateTimeParse.Parse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None); 
} 

public static bool TryParse(string s, out DateTime result) 
{ 
    return DateTimeParse.TryParse(s, DateTimeFormatInfo.CurrentInfo, DateTimeStyles.None, out result); 
} 

DateTimeParse:

internal static DateTime Parse(string s, DateTimeFormatInfo dtfi, DateTimeStyles styles) 
{ 
    DateTimeResult result = new DateTimeResult(); 
    result.Init(); 
    if (!TryParse(s, dtfi, styles, ref result)) 
    { 
     throw GetDateTimeParseException(ref result); 
    } 
    return result.parsedDate; 
} 

TryParse daha iyi

Referanslar:

Reflector

1

Aşağıdakileri deneyin:

DateTime todate; 
if(!DateTime.TryParse("2009/31/01", todate)) 
{ 
//------------conversion failed-------------// 
} 
2

iyi desen bu

string DateFormat = "dd/MM/yyyy"; //Or any other format 
DateTime dateTime; 
bool success = DateTime.TryParseExact(value, DateFormat, 
     CultureInfo.InvariantCulture, 
      DateTimeStyles.None, 
       out dateTime); 

DateTime.Parse ve hatta DateTime.TryParse

İlgili konular