2011-02-10 22 views
11

Dostaję ciąg z powrotem z mojej strony i chcę się upewnić, że to randka. To jest to, co mam do tej pory (działa) i chcę tylko wiedzieć, czy jest to "najlepszy" sposób, aby to zrobić. Używam .NET 4.Najlepszy sposób na randkę z .NET?

int TheMonth =0; 
int TheDay = 0; 
int TheYear = 0; 
DateTime NewDate; 

var TheIncomingParam = Request.Params.Get("__EVENTARGUMENT").ToString(); 

char[] TheBreak = { '/' }; 
string[] TheOutput = TheIncomingParam.Split(TheBreak); 

try { TheMonth = Convert.ToInt32(TheOutput[0]); } 
catch { } 

try { TheDay = Convert.ToInt32(TheOutput[1]); } 
catch { } 

try { TheYear = Convert.ToInt32(TheOutput[2]); } 
catch { } 

if (TheMonth!=0 && TheDay!=0 && TheYear!=0) 
{ 
     try { NewDate = new DateTime(TheYear, TheMonth, TheDay); } 
     catch { var NoDate = true; } 
} 
+44

mieć dobrą linię Pick-up. – jerebear

+0

Jakiej wersji asp.netu używasz? – Vishal

+2

Mieć dużo pieniędzy – flumpb

Odpowiedz

13

Użyj jednej z metod określonych Parse na strukturze DateTime.

Będą rzucać wyjątek, jeśli ciąg nie jest parsowalnym, więc możesz użyć jednej z metod TryParse zamiast (nie tak bardzo - wymagają one parametr wyjściowy, ale są bezpieczniejsze):

DateTime myDate; 
if(DateTime.TryParse(dateString, 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None, 
        out myDate)) 
{ 
    // Use myDate here, since it parsed successfully 
} 

Jeśli znasz dokładny format podanej daty, możesz spróbować użyć ParseExact lub TryParseExact, które pobierają ciąg znaków daty i czasu (standard lub custom) podczas próby przeanalizowania ciągu daty.

+0

Ah! Jest już wbudowany w framework! Dzięki. BTW, Mam swoją stronę do pracy: zamiast metod strony, aby wysłać parametr, mam go do pracy z __doPostBack. – frenchie

+0

@frenchie - Cieszę się, że dostałeś to posortowane ... i BCL ma mnóstwo takich dodatków wbudowane. Poświęć trochę czasu na czytanie dokumentacji na MSDN, nigdy nie wiesz, co znajdziesz. – Oded

+0

Tak, istnieje wiele wbudowanych funkcji, które mogą pomóc, ale tylko wtedy, gdy wiesz, że one istnieją. Niedawno odkryłem metody rozszerzania i są niesamowite! – frenchie

0

Dla URL:using data iso mrówczan (YYYYMMDD)

do konwersji:

datetime.TryParse as suggested above

0

Chciałbym tylko TryParse ciąg wejściowy:

private bool ParseDateString() 
    { 
     var theIncomingParam = Request.Params.Get("__EVENTARGUMENT").ToString(); 

     DateTime myDate; 

     if (DateTime.TryParse(theIncomingParam, CultureInfo.InvariantCulture, DateTimeStyles.None, out myDate)) 
     { 
      int TheMonth = myDate.Month; 
      int TheDay = myDate.Day; 
      int TheYear = myDate.Year; 

      // TODO: further processing of the values just read 

      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
Powiązane problemy