2016-03-08 18 views
0

我想把這個日期放在while循環中的switch語句中。不知道在哪裏聲明變量以使其起作用。我也想讓字符串日期處理錯誤的輸入。這對字符串如何工作?C#如何在開關中讀取和打印日期

string date = Console.ReadLine(); 
DateTime dt = Convert.ToDateTime(date);    
Console.WriteLine("{0}/{1}/{2}", dt.Year, dt.Month, dt.Day); 

這是我的代碼

while(true) { 
    Console.WriteLine("[1] Enter date (dd/mm/yyyy)"); 
    Console.WriteLine("[2] Print date"); 
    Int32.TryParse (Console.ReadLine(), out answer); 

    switch (answer) { 
    case 1: 
    break; 
    } 

    case 2: 
    break; 
    }  
} 
+0

要處理無效日期,最好使用'DateTime.TryParse'。 – juharr

+0

有時最好購買一本書並閱讀它,而不要問不專心的問題。學習編程很難! –

回答

2

這聽起來像你想擁有循環外的DateTime變量,你可以使用DateTime.TryParse以確定它們是否輸入的日期是否有效。如果您只想允許一種日期格式輸入,也可以使用DateTime.TryParseExact。你也可以允許他們結束循環。

DateTime dt = new DateTime(); 
bool keepGoing = true; 
while (keepGoing) 
{ 
    Console.WriteLine("[1] Enter date (dd/mm/yyyy)"); 
    Console.WriteLine("[2] Print date"); 
    Console.WriteLine("[3] Stop"); 
    int answer; 
    int.TryParse(Console.ReadLine(), out answer); 

    switch (answer) 
    { 
     case 1: 
      if(!DateTime.TryParse(Console.ReadLine(), out dt)) 
      { 
       Console.WriteLine("Invalid Date"); 
      } 
      break; 
     case 2: 
      Console.WriteLine("{0}/{1}/{2}", dt.Year, dt.Month, dt.Day); 
      break; 
     case 3: 
      keepGoing = false; 
      break; 
     default: 
      Console.WriteLine("Incorrect Entry"); 
      break; 
    } 
}