C#检查输入是否为有效日期

时间:2015-10-29 09:58:28

标签: c# date time

我正在制作日历。在这里,我想检查用户输入是否是一个日期,如果它没有显示错误。我听说过DateTime.TryParse。我怎么能在这里正确使用它?也许有人可以用简单的词语来解释它吗?

    public void addMeeting()
    {
      string readAddMeeting;
      var dateFormats = new[] {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}; // I copied this

      Console.WriteLine("Add a schedule for specific dates: ");

      readAddMeeting = Console.ReadLine();
    }

2 个答案:

答案 0 :(得分:7)

以这种方式使用DateTime.TryParseExact

public void addMeeting()
{
    var dateFormats = new[] {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}; 
    Console.WriteLine("Add a schedule for specific dates: ");
    string readAddMeeting = Console.ReadLine();
    DateTime scheduleDate;
    bool validDate = DateTime.TryParseExact(
        readAddMeeting,
        dateFormats,
        DateTimeFormatInfo.InvariantInfo,
        DateTimeStyles.None, 
        out scheduleDate);
    if(validDate)
        Console.WriteLine("That's a valid schedule-date: {0}", scheduleDate.ToShortDateString());
    else
        Console.WriteLine("Not a valid date: {0}", readAddMeeting);
}

该方法返回bool,指示是否可以对其进行解析,并将DateTime变量作为out参数传递,如果日期有效,则会初始化该参数。

请注意,我使用DateTimeFormatInfo.InvariantInfo是因为您不想使用本地DateTime格式,而是使用适用于任何文化格式的格式。{p}}否则,/中的dd/MM/yyyy将替换为您当前的文化日期分隔符。 Read

答案 1 :(得分:0)

即使它听起来有点残酷,但似乎你应该对数组/列表,foreach循环和DateTime.TryParse进行一些读取。

除此之外,您有不同的可能日期格式,并希望查看其中一种格式是否有效。如果我们从msdn主页获取tryparse https://msdn.microsoft.com/en-us/library/ch92fbc1(v=vs.110).aspx的示例并使用foreach它变得非常简单:

public void addMeeting()
{
    string readAddMeeting;
    var dateFormats = new[] {"dd.MM.yyyy", "dd-MM-yyyy", "dd/MM/yyyy"}; // I copied this
    bool isDateOk = false;

    Console.WriteLine("Add a schedule for specific dates: ");

    readAddMeeting = Console.ReadLine();

    foreach (string myDateFormat in dateFormats)
    {
        DateTime dateValue;
        if (DateTime.TryParse(readAddMeeting, dateValue)) 
        {
            isDateOk = true;
        }
    }

    if (isDateOk == false)
    {
        Console.Writeline("Sorry this is not a valid date");
    }
}