C#检查输入是否为有效日期
本文关键字:有效日期 是否 输入 检查 | 更新日期: 2023-09-27 18:19:53
我正在制作日历。在这里,我想检查用户输入的是不是一个日期,以及它是否没有显示错误。我听说了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();
}
以这种方式使用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
格式,而是一种适用于任何文化的格式。否则,dd/MM/yyyy
中的/
将替换为当前区域性的日期分隔符。读取
即使这听起来有点残酷,但似乎你应该对数组/列表、foreach循环和DateTime.TryParse.进行一些读取
除此之外,你还有不同的可能的日期格式,想看看其中一种是否有效。如果我们从msdn的锥虫主页上举一个例子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");
}
}