2017-10-10 75 views
0

我用下面的代码工作:C#在几个月两个用户输入日期和多年之间的区别

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


    } 

我一直无法弄清楚如何来计算之间的几个月和几年的区别两个日期。谁能帮忙?另外,如何让程序每次都返回一个正整数?

+2

你会怎么做,如果你在你的手指算?这样做。 –

+0

对于问题的最后部分:'TimeSpan diff =(firstDate - secondDate).Duration()'。 –

+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++; 
    } 
} 
相关问题