我需要输出两年,几个月和几天之间的差异.
使用timepan和subtract我只能获得日期,但是可以按年,月和日输出.
这是我到目前为止:
public string Leeftijdsverschil(DateTime p1, DateTime p2)
{
if (p1 > p2)
{
DateTime verschil = p1.Subtract(TimeSpan.FromTicks(p2.Ticks));
return verschil.ToString();
}
else
{
DateTime verschil = p2.Subtract(TimeSpan.FromTicks(p1.Ticks));
return verschil.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 12
.NET类型没有给你一个合适的答案,而不必编写代码来尝试一个答案并进行适当的调整,但我的Noda Time项目旨在处理这类事情.例如:
LocalDate x = new LocalDate(2013, 5, 21);
LocalDate y = new LocalDate(2014, 12, 15);
Period p = Period.Between(x, y);
Console.WriteLine("{0} {1} {2}", p.Years, p.Months, p.Days);
Run Code Online (Sandbox Code Playgroud)
结果:
1 6 24
Run Code Online (Sandbox Code Playgroud)
(即1年,6个月和24天)
如果您决定使用Noda Time,您可以在您的方法中使用,DateTime在其他地方使用并在类型之间进行转换......但通常更好地更广泛地接受Noda Time.其目的是让您的代码更清晰,而不仅仅是使用DateTime.