2017-01-23 129 views
0

我正在开发一个简单的程序,用于计算会员的年龄,并根据年龄应用正确的会员费。C#格式化TimeSpan以显示日期

 public static DateTime DateTime() 
    { 
     DateTime birth = new System.DateTime(1991, 9, 20); 
     DateTime today = new System.DateTime(2017, 1, 22); 
     TimeSpan age = today - birth; 
     Console.WriteLine(age); 
     return birth; 
    } 

这里是我使用的代码,我的返回值是

9256.00:00:00 

如何可以解析到一个更可读的YYYY,MM,DD的格式呢?

+2

那格式对于一个时间段没有意义。 –

+0

你真的想要展示什么? –

+0

如果你需要大多数人都能理解的“年龄” - 整整一年的人数还活着 - 你可能需要使用http://stackoverflow.com/questions/9/how-do-i-calculate-someones-age- in-c只需几年就可以得到结果。 –

回答

0

使用nodatime

var ld1 = new LocalDate(1991, 9, 20); 
var ld2 = new LocalDate(2017, 1, 22); 
var period = Period.Between(ld1, ld2); 

Debug.WriteLine(period.Years); 
Debug.WriteLine(period.Months); 
Debug.WriteLine(period.Days); 
+0

谢谢!这有助于我得到我需要的地方。 –

0

由于Jon Skeet所言:

时间跨度有60年“”没有合理的概念,因为它依赖于 起点和终点。

为什么你不试试他的Noda Time呢?

您可以手动下载here

您可以通过365.25(平均天数在一年中)也划分,并获得整数

Convert.ToInt32(age.Days/365.25); 
+0

如果您没有任何内容可以添加到现有的其他问题答案中,则投票为重复选项是更好的选择。 –

+0

编辑添加一点答案。 –