生日计算器在时间跨度后没有值

时间:2019-02-08 10:14:50

标签: c#

我试图制作一个小的生日(年)计算器,但时间跨度后的值不知何故消失了。

我尝试过转换为DateTime,然后再转换为两倍,但仍然没有效果。

DateTime today = DateTime.Today;
Console.WriteLine("Type your birthday: ");
DateTime b = DateTime.Parse(Console.ReadLine());
TimeSpan age = (today - b);
string s = age.ToString();
double final = double.Parse(s) / 365.2425;

Console.WriteLine("You have" + final + "years");

2 个答案:

答案 0 :(得分:3)

使用age.Daysage.ToString()会返回dddd.00:00:00之类的内容,其中dddd是几天。但是您只需要几天的时间,因此age.Days就可以完成工作。

但是我建议您使用age.TotalDays,因为它返回一个double,所以您不必解析它。完整代码段:

DateTime today = DateTime.Today;
Console.WriteLine("Type your birthday: ");
DateTime b = DateTime.Parse(Console.ReadLine());

TimeSpan age = (today - b);
double final = age.TotalDays / 365.2425;

Console.WriteLine("You have" + final + "years");

答案 1 :(得分:0)

如果看到age.ToString()的结果,则会看到类似10265.00:00:00的值,该值无法正确地解析为double。

使用.Days类的TimeSpan属性,您可以完全省略解析。

DateTime today = DateTime.Today;
Console.WriteLine("Type your birthday: ");
DateTime b = DateTime.Parse(Console.ReadLine());
TimeSpan age = (today - b);
double final = age.Days / 365.2425;

Console.WriteLine("You have" + final + "years");