我想检查字符串是否是有效的DateTime,但是遇到了一些麻烦。首先,我知道DateTime.TryParse
并且我无法使用它,因为它需要DateTime
作为out
参数,并且我没有一个可用。< / p>
我的课程有2个公共属性,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
,而不需要任何out
个参数?
答案 0 :(得分:1)
这样的东西?
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;
}
}
答案 1 :(得分:-1)
使用以下
DateTime.ParseExact(textBoxDOB.Text, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)
而不是
DateTime.TryParse(textBoxDOB.Text, out new DateTime())