我试图制作一个小的生日(年)计算器,但时间跨度后的值不知何故消失了。
我尝试过转换为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");
答案 0 :(得分:3)
使用age.Days
。 age.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");