c#两个用户输入日期之间的差异,以月和年为单位

时间:2017-10-10 17:11:53

标签: c# date user-input date-difference

我正在使用以下代码:

    static void Main(string[] args)
    {
        Dates();
        Console.ReadLine();        

    }

    public static void Dates()
    {

        Console.WriteLine("Enter any date: ");
        DateTime firstDate = DateTime.Parse(Console.ReadLine());
        Console.WriteLine("Enter another date: ");
        DateTime secondDate = DateTime.Parse(Console.ReadLine());

        TimeSpan diff = firstDate - secondDate;

        Console.WriteLine("Days : " + diff.TotalDays.ToString());
        Console.WriteLine("Hours : " + diff.TotalHours.ToString());
        Console.WriteLine("Minutes : " + diff.TotalMinutes.ToString());


    }

我无法弄清楚如何计算两个日期之间的月份和年份的差异。有人可以帮忙吗?另外,如何让程序每次都返回一个正整数?

1 个答案:

答案 0 :(得分:0)

这是对问题第一部分的回答,计算年和月的两个日期之间的差异(以及日期,为什么不是)。这个问题有些含糊不清,所以我做了一些假设。

就像,我采取了差异'当我们计算年龄时,我们通常是指。如果,如果开始日期为5/12/2014且结束日期为2/16/2017,则我将差值计算为2 years, 9 months, and 3 days。你得到漂移。

其次,我没有考虑一天中的时间。如同我创建DateTime对象时仅指定year,个月, and天。

所以这里是:

public static void DateTimeDiff(DateTime dt1, DateTime dt2, out int years, out int months, out int days)
{
    DateTime start = dt1 < dt2 ? dt1 : dt2;
    DateTime end = dt2 > dt1 ? dt2 : dt1;

    years = 0;
    months = 0;
    days = 0;

    while (start.AddYears(1) < end)
    {
        start = start.AddYears(1);
        years++;
    }

    while (start.AddMonths(1) < end)
    {
        start = start.AddMonths(1);
        months++;
    }

    while (start.AddDays(1) < end)
    {
        start = start.AddDays(1);
        days++;
    }
}