繁体   English   中英

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

[英]c# The difference between two user input dates in months and years

我正在使用以下代码:

    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());


    }

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

这是对问题的第一部分的答案,计算了年份和月份中两个日期之间的差异(以及天,为什么不这样)。 这个问题有点模棱两可,所以我做了一些假设。

就像我在计算年龄时通常所说的“差异”一样。 如,如果起始日期是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++;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM