年、月、日2天之间的差异
本文关键字:之间 2天 | 更新日期: 2023-09-27 18:34:11
我需要以年、月和日为单位输出 2 天之间的差异。
使用时间跨度和减去,我只得到天数,但是否可以以年、月和日为单位输出。
这是我到目前为止所拥有的:
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();
}
}
.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);
结果:
1 6 24
(即1年6个月零24天)
如果您决定为此使用 Noda Time,您可以在您的方法中执行此操作,在其他地方使用DateTime
并在类型之间进行转换......但一般来说,更广泛地拥抱野田时间会更好。目的是让它让您的代码比仅使用 DateTime
更清晰。
要得到增量,只需直接减去:
var delta = p1 - p2;
这给了你一个TimeSpan
.从那里,您可以访问 .Days
.然而,几个月和几年要复杂得多。如果你想要这些术语的差异,你必须直接比较p1
和p2
的属性(或者:正如Jon所说:使用Noda Time)。