2017-10-10 34 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++; 
    } 
} 
相關問題