关于datetime:C#格式化TimeSpan以显示日期

C# Formatting TimeSpan to show a date

本问题已经有最佳答案,请猛点这里访问。

我正在研究一个简单的程序,它计算会员的年龄,并根据年龄应用正确的会员费。

1
2
3
4
5
6
7
8
        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;
    }

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

1
9256.00:00:00

如何将其解析为更可读的YYYY、MM、DD格式?


使用nodatime

1
2
3
4
5
6
7
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);


正如乔恩·斯基特所说:

TimeSpan has no sensible concept of"years" because it depends on the
start and end point.

你为什么不试试他的诺达时间?

您可以在此处手动下载

你也可以除以365.25(一年中的平均天数),得到整数。

1
Convert.ToInt32(age.Days / 365.25);