检查字符串是否为有效日期
本文关键字:有效日期 是否 字符串 检查 | 更新日期: 2023-09-27 18:29:54
我想检查一个字符串是否是有效的DateTime,但遇到了一些问题。首先,我知道DateTime.TryParse
,但我不能使用它,因为它需要一个DateTime
作为out
参数,而我没有可用的参数。
我有一个类,它有两个公共属性,Name
和DOB
。我可以通过单击按钮来更新单个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())