-1

如何确保只有在控制台中输入的这种日期格式被接受并存储在文本文件中,而任何其他格式都不应该存储在文本文件中,并且应该显示一条错误消息,提示用户正确输入日期格式。

Date Format = MM/DD/YYYY

使用以下代码 13/10/2013 会显示错误消息,但即使输入正确的格式(如 2013 年 12 月 12 日),它也会显示相同的错误消息并不断重复,如果不验证正确的格式。return 暂停应用程序。

if(!DateTime.TryParseExact(Date,"MM-dd-yyyy",new CultureInfo("en-US"),DateTimeStyles.None,out date))
{
    Console.WriteLine("Invalid date format!");
    while(!DateTime.TryParseExact(Date,"MM-dd-yyyy",new CultureInfo("en-US"),DateTimeStyles.None,out date))
    {
        Console.WriteLine("Invalid Date Entered, please format MM-dd-yyyy");
        Date = Console.ReadLine();
    }
}

不允许使用字符串生成器和其他概念。该怎么办?


我接受用户的输入作为字符串,然后检查它是否格式正确,然后将其转换回字符串,如果它符合指定的格式,然后只有当用户输入正确的日期时它才会存储在我的文本文件中格式。


public override bool IsValid(string value)
{
    string format = "MM/dd/yyyy";
    DateTime dt;

    if (DateTime.TryParseExact((String)value, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
    {
        return IsValid(dt);
    }
    else
    {
        return false;
    }
}

上面的代码可以修改并与我的代码融合以使其正常工作吗?

4

3 回答 3

1

以下代码将起作用:

            Console.WriteLine("Enter the Date Scheduled For the Meeting:");
            string Date = Console.ReadLine();
            DateTime Test;
            if(DateTime.TryParseExact(Date, "MM/dd/yyyy", null, DateTimeStyles.None, out Test) == true)
            {
                    Console.WriteLine("Date is in the correct Format");
            }
            else
            {
                     Console.Write("Date Not OK");
                     return;
            }
于 2013-08-06T08:53:28.073 回答
1

将格式更改为"MM/dd/yyyy"

如果您需要验证日期格式,MM/dd/yyyy则需要将其作为TryParseExact方法中的格式字符串提供,目前您有MM-dd-yyyy. 所以你需要输入类似01-01-2013

于 2013-08-05T07:15:18.597 回答
0

如果您的格式是 MM/DD/YYYY,为什么要解析 MM-DD-YYYY?

 while(!DateTime.TryParseExact(Date,"MM/dd/yyyy",CultureInfo.InvariantCulture,DateTimeStyles.None,out date))
于 2013-08-05T07:19:27.583 回答