2015-11-05 75 views
0

我正在建立一個日曆,我想檢查用戶輸入是否是有效日期。我得到了這一點,現在我不知道如何重複「無效日期」的信息,直到它是一個有效的日期。檢查用戶輸入是否有效日期


我的代碼:

var dateFormats = new[] {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}; 

Console.Write("\nSet your date: "); 

string readAddMeeting = Console.ReadLine(); 
DateTime scheduleDate; 

bool validDate = DateTime.TryParseExact(
    readAddMeeting, 
    dateFormats, 
    DateTimeFormatInfo.InvariantInfo, 
    DateTimeStyles.None, 
    out scheduleDate); 

if (validDate) 
{ 
    Console.ForegroundColor = ConsoleColor.Green; 
    Console.WriteLine("Valid date"); 
    Console.ForegroundColor = ConsoleColor.White; 
} 
else 
{ 
    Console.ForegroundColor = ConsoleColor.Red; 
    Console.WriteLine("Invalid date: \"{0}\"", readAddMeeting); 
    Console.ForegroundColor = ConsoleColor.White; 
} 
+0

您可以使用'while'語句。檢查它的文檔。 –

+0

你需要解釋你的意思,「如何重複信息」無效日期「,直到它是一個有效的」我不遵循。 – Seabizkit

+0

你可以使用while。而且您不需要使用dateformats以及TryParseExact。相反,你可以簡單地使用TryParse。例如,如果當前的文化是en-US,那麼用戶可能想要輸入「2015年1月1日」,這是一個有效的日期。 –

回答

1

嘗試類似:

var dateFormats = new[] {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}; 

bool validate = true; 
while (validate) // Loop indefinitely 
{ 
    Console.Write("\nSet your date: "); // Prompt 
    string readAddMeeting = Console.ReadLine(); // Get string from user 

    DateTime scheduleDate; 
    if(DateTime.TryParseExact(readAddMeeting,dateFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out scheduleDate)) 
    { 
     Console.ForegroundColor = ConsoleColor.Green; 
     Console.WriteLine("Valid date"); 
     validate = false; 
    } 
    else 
    { 
     Console.ForegroundColor = ConsoleColor.Red; 
     Console.WriteLine("Invalid date: \"{0}\"", readAddMeeting); 
    } 
    Console.ForegroundColor = ConsoleColor.White; 
} 
+0

當你寫'while(true)'時,即使你寫了一個,它總是顯示「輸入有效日期」。 – user5462581

+0

@ user5462581 100%...我調整了一下,我的意思是這是一個例子.....讓他調整。 – Seabizkit

+0

那麼在工作中soloutin是什麼?我現在想了很久。不知道它是如何工作的100%。 – user5462581

1

使用do/while循環:

do 
{ 
     ... your code here 

}while(!validDate); 
0

使用do-while循環:

do{ 
var dateFormats = new[] {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}; 

Console.Write("\nSet your date: "); 

string readAddMeeting = Console.ReadLine(); 
DateTime scheduleDate; 

bool validDate = DateTime.TryParseExact(
readAddMeeting, 
dateFormats, 
DateTimeFormatInfo.InvariantInfo, 
DateTimeStyles.None, 
out scheduleDate); 

if (validDate) 
{ 
Console.ForegroundColor = ConsoleColor.Green; 
Console.WriteLine("Valid date"); 
Console.ForegroundColor = ConsoleColor.White; 
} 
else 
{ 
Console.ForegroundColor = ConsoleColor.Red; 
Console.WriteLine("Invalid date: \"{0}\"", readAddMeeting); 
Console.ForegroundColor = ConsoleColor.White; 
} 
}while(!validDate) 
相關問題