检查用户输入的日期是否有效

Check if user input is a valid date

我正在构建一个日历,我想检查用户输入的日期是否有效。我已经走到这一步了,现在我不知道如何重复消息 "invalid date" 直到它成为有效消息。


我的代码:

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;
}

使用 do/while 循环:

do
{
      ... your code here

}while(!validDate);

使用 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)

试试这样的东西:

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;
}