年、月、日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();
    }
}

年、月、日2天之间的差异

.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 .然而,几个月和几年要复杂得多。如果你想要这些术语的差异,你必须直接比较p1p2的属性(或者:正如Jon所说:使用Noda Time)。