【发布时间】:2019-08-12 16:24:12
【问题描述】:
程序需要在列表中找到最年轻(或最年长)的人。生日实际上是string。我使用Convert.ToDateTime() 转换了日期,效果很好。然而,在少数情况下,输入只是一个year,没有day 和month,例如“1945”。转换器出现故障。
我的问题:
1) 我可以添加什么检查器来防止此类运行时故障?
2) 如何在不覆盖包含day 和month 的字符串的情况下将其转换为日期?
代码是:
DateTime curr_bday = Convert.ToDateTime(p.Birthday);
这是完整的例程:
public string the_youngest(Persons _p2)
{
DateTime youngAge = Convert.ToDateTime("01/01/1005");
DateTime curr_bday;
string to_ret = "";
foreach (var p in _p2.persons)
{
curr_bday = Convert.ToDateTime(p.Birthday);
if (curr_bday < youngAge)
{
youngAge = curr_bday;
to_ret = p.Name + " : " + p.Birthday;
}
}
return (to_ret);
}
【问题讨论】:
-
这些字符串是从哪里来的,你能给我们举几个例子吗?
-
用
int.TryParse测试字符串是否为整数。如果是,请使用仅指定年份的新构造的 DateTime 初始化您的生日变量。否则,将字符串解析为日期时间 -
字符串来自解析器。这是给定的输入。
-
@ Flydog57 :看起来它运行良好。我在比较部分有一个错误(更大的生日意味着更年轻的人)谢谢!
标签: c# datetime type-conversion