检查字符串是否为有效日期

本文关键字:有效日期 是否 字符串 检查 | 更新日期: 2023-09-27 18:29:54

我想检查一个字符串是否是有效的DateTime,但遇到了一些问题。首先,我知道DateTime.TryParse,但我不能使用它,因为它需要一个DateTime作为out参数,而我没有可用的参数。

我有一个类,它有两个公共属性,NameDOB。我可以通过单击按钮来更新单个Person的这些属性。所以我想,在我的Button的Click事件中,我会首先检查传递的字符串是否是有效的DateTime:

private void Button_Click_2(object sender, EventArgs e)
{
    if (listBoxPeople.SelectedIndex != -1 && DateTime.TryParse(textBoxDOB.Text, out new DateTime()))
    {
        Person p = listBoxPeople.SelectedItem as Person;
        p.Name = textBoxName.Text;
        p.DOB = DateTime.Parse(textBoxDOB.Text);
    }
}

然而,这不起作用,它抛出一个错误,说out参数必须是可赋值的。

所以我尝试使用TryParse,并将out参数设置为对象的DOB属性,如下所示:

private void Button_Click_2(object sender, EventArgs e)
{
    if (listBoxPeople.SelectedIndex != -1)
    {
        Person p = listBoxPeople.SelectedItem as Person;
        p.Name = textBoxName.Text;
        DateTime.TryParse(textBoxDOB.Text, out p.DOB);
    }
}

但这也带来了一个错误,称

属性不能作为out或ref参数传递

是否有一个函数隐藏在某个地方,只返回字符串是否为有效DateTime的bool,而不需要任何out参数?

检查字符串是否为有效日期

类似的东西?

private void Button_Click_2(object sender, EventArgs e)
{
    DateTime tempDate;
    if (listBoxPeople.SelectedIndex != -1 && DateTime.TryParse(textBoxDOB.Text, out tempDate))
    {
        Person p = listBoxPeople.SelectedItem as Person;
        p.Name = textBoxName.Text;
        p.DOB = tempDate;
    }
}

使用以下

DateTime.ParseExact(textBoxDOB.Text, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)

而不是

DateTime.TryParse(textBoxDOB.Text, out new DateTime())